GREP - консольная утилита в операционных системах. С помощью grep в терминале (или эмуляторе) можно осуществлять поиск заданного выражения в текстовых файлах, логах и конфигурационных данных, а так же для фильтрации вывода других комманд и выводить их на экран, если вывод не отменён специальным ключом. Предустановлена в системе, не требует загрузки дополнительных библиотек. Пришла по наследству от [UNIX] систем.

Синтаксис

grep ключи выражение файл

Поиск выражения в каждом файле или в стандартном вводе.

Ключи:

  • -b Предваряет каждую строку номером блока, в котором она была найдена. Это может пригодиться при поиске блоков по контексту (блоки нумеруются с 0).

  • -c Выдает только количество строк, содержащих образец.

  • -h Предотвращает выдачу имени файла, содержащего сопоставившуюся строку, перед собственно строкой. Используется при поиске по нескольким файлам.

  • -i Игнорирует регистр символов при сравнении выражения и данных ввода.

  • -l Выдает только имена файлов, содержащих сопоставившиеся строки, по одному в строке. Если образец найден в нескольких строках файла, имя файла не повторяется.

  • -L Вывод имён файлов, в которых хотя ни одна строка не совпадает с шаблоном.

  • -n Выдает перед каждой строкой ее номер в файле (строки нумеруются с 1).

  • -s Подавляет выдачу сообщений о не существующих или недоступных для чтения файлах.

  • -v Выдает все строки, за исключением содержащих образец.

  • -w Поиск исключительно по заданному слову. Например, при поиске “the” не будет считаться за совпадение слово “mother”.

  • -r Рекурсивный поиск (затрагивает все вложенные каталоги и файлы).

  • -A Вывод двух строк контекста после найденного выражения.

  • -B Вывод двух строк перед найденным выражением.

  • -C Вывод двух строк до и двух строк после найденного выражения

Примеры использования

Чтобы указать для поиска любой символ ноль или более раз используйте .*. Для того, чтобы Grep воспринимал спецсимволы как обычные строчные, необходимо воспользоваться обратным слешем, как в оболочке:

grep ‘\<’ filename

Поиск в выводе других комманд осуществляется при помощи символа |. Например, найти строку ‘’wireless’‘ в выводе lspci:

lspci | grep -i wireless

Символ ^ обозначает начало строки.

Символ $ обозначает конец строки.

Например, найти все имена файлов в текущем каталоге, оканчивающихся на ‘’.doc’‘, но не на ’‘.docx’‘:

ls | grep ‘.*doc$’

  • Найти текст во множестве файлов в каталоге.

Часто бывает, что нужно найти какой-либо текст (код). Это просто сделать, например:

grep -rnl “text” /var/www/html

Подсветка цветом

По умолчанию во многих дистрибутивах создан псевдоним для утилиты grep с включенной подсветкой найденных совпадений. Вы можете выключить её при помощи ключа ‘’–colour=off’‘, выбрать автоматическую (–colour=auto) или постоянную (–colour=always) подсветку.