grep – Поиск файлов или строки в файле по шаблону.
grep "шаблон поиска" "file_name"
Допустим в папке /root у нас лежит три файла:
/root/.bash_history
/root/.bash_history
/root/test
-r Поиск рекурсивно по всем файлам в указанной директории. Пример:
#grep -r authorized /root
/root/.bash_history:mv authorized_keys authorized_keys2
/root/.bash_history:chmod 600 authorized_keys2
/root/test: authorized_keys2 test file
-h Не выводит имя файла при поиске по нескольким файлам. Пример:
#grep -rh authorized /root
mv authorized_keys authorized_keys2
chmod 600 authorized_keys2
authorized_keys2 test file
-l Выводит только имена файлов, в которых найдена строка. Если в файле есть несколько таких строк, то имя файла выводится только один раз. Пример:
#grep -rl authorized /root
/root/.bash_history
/root/test
-c Выводит количество найденных строк. Пример
#grep -с authorized /root/.bash_history
2
#grep -rlс authorized /root
3
-v Выводит все строки кроме содержащих указанный шаблон.
-i Игнорировать регистр при поиске. То есть если Вы указали шаблон поиска с маленьких букв, в результат
попадут также строки, где встречается этот шаблон с заглавными буквами.
-n Добаляет номер найденной строки в начало ее вывода.
-s Подавляет вывод ошибок о ненайденом файле, например.
-w Поиск шаблона как отдельного слова, например поиск по -w “auth” не будет включать в результат строки, где встречается “authentic”, а только строки где есть отдельоне слово auth.
Подскажите, пожалуйста. Передо мной стоит такая задача:
Необходимо разработать скрипт на языке Bash, принимающий первым параметром абсолютный путь до директории, в которой лежат некоторые файлы. Необходимо произвести поиск в файлах данной директории строк, содержащих последовательность символов. Последовательность символов передана скрипту во втором параметре. Результаты поиска скрипт должен выводить в стандартный поток вывода в виде «Имя_файла Номер_строки Найденная_строка»
Как мне это реализовать? Достаточно ли одной команды grep?
grep -rn <последовательность> <путь к папке поиска>
если без учета регистра – добавить клю ч “i”
как используя grep ,найти и вывести в тексте только строки и пробелы?
опишите более детальо задачу. Какие строки пустые что-ли ? не совсем понял что вывести … представляете что значит “вывести пробелы” ? 🙂
А как получить вывод
grep -iRI “n” /etc/
но без учета строк, начинающихся с “;” ?
можно попробовать как-то так например:
grep -iRIvl "^;" /etc/ | xargs grep -iRI "n"
или так:
for i in `grep -iRIvl "^;" /etc/`;do grep -iRI "n" $i ;done