Grep
Слово «грепать» входит в топ самых популярных терминов, используемых разработчиками. Оно происходит от одноименной консольной утилиты grep
(сокращение от global regular expression print). Эта утилита выполняет поиск определенного текста по файлу или файлам.
В этом уроке мы научимся грепать и разберемся в особенностях этого процесса.
Для разработчиков «грепать» — то же самое, что гуглить для активных пользователей интернета. Как правило, грепают файлы с исходным кодом или логи во время отладки:
Рассмотрим этот пример подробнее:
PATTERN
— это то, что мы хотим найти. Это может быть конкретная строчка или определенный шаблон с [регулярными выражениями](https://ru.wikipedia.org/wiki/Регулярные_выраженияFILE
— путь до файла, в котором нужно искать
Посмотрите на еще один пример:
В примере выше утилита grep
нашла пять строк. Найденные строчки выводятся на экран в том же порядке, в котором они встречаются в исходном файле.
В некоторых ситуациях нам нужно увидеть не только саму строку, но и текст вокруг нее. Количество выводимых соседних строк регулируется тремя опциями:
Количество отображаемых строк до искомой строки —
-B
или--before-context
Количество отображаемых строк после искомой —
-A
или--after-context
Количество отображаемых строк до и после искомой строки —
-C
или--context
Изучим пример использования -C
со значением 1
. Это значит, что для каждой найденной строки будет выведена одна строка выше и одна строка ниже:
Иногда мы не знаем, в каком файле находится то, что мы ищем. При этом мы можем знать директорию, в которой лежит этот файл.
В такой ситуации нужно сделать два изменения:
Добавить опцию
-r
— она указывает, что надо искать внутри директории. Обратите внимание, что поиск идет рекурсивно, то есть с включением всех поддиректорийУказать путь до директории, а не файла
Попробуем применить утилиту grep
с опцией -r
:
При таком поиске в выводе указывается файл, в котором была найдена строка. Если добавить опцию n
, то дополнительно отобразится номер строки:
Дополнительные материалы
Вопросы для самопроверки
Что означает фраза «грепать файл»?
Выводить на экран содержимое файла
Искать в файле все строчки, соответствующие шаблону
Искать файл
Удалять файл
Что будет выведено на экран при выполнении команды grep -C 3 alias ~/.bashrc
?
Результат поиска, сгруппированный по три строки
Строки, содержащие
alias
с тремя соседними строками до и после нееТри первые строки из файла .bashrc, содержащие
alias
Список искомых строк
Где будет произведен поиск, если указана команда grep -r myname?
В первом найденном файле
В файлах текущей директории и всех вложенных поддиректориях
В файлах текущей директории
В скрытых файлах текущей директории