Иногда пользователи сталкиваются с необходимостью осуществления поиска определенной информации внутри каких-либо файлов. Часто конфигурационные документы или другие объемные данные вмещают в себе большое количество строк, поэтому вручную отыскать нужные данные не получается. Тогда на помощь приходит одна из встроенных команд в операционные системы на Linux, которая позволит выполнить нахождение строк буквально за считанные секунды.
Используем команду grep в Linux
Что касается различий между дистрибутивами Линукс, в этом случае они не играют никакой роли, поскольку интересующая вас команда grep по умолчанию доступна в большинстве сборок и применяется абсолютно одинаково. Сегодня мы бы хотели обсудить не только действие grep, но и разобрать основные аргументы, которые позволяют значительно упростить процедуру поиска.
Читайте также: Ищем файлы в Linux
Подготовительные работы
Все дальнейшие действия будут производиться через стандартную консоль, она же позволяет открывать файлы только путем указания полного пути к ним либо если «Терминал» запущен из необходимой директории. Узнать родительскую папку файла и перейти к ней в консоли можно так:
- Запустите файловый менеджер и переместитесь в нужную папку.
- Нажмите правой кнопкой мыши на требуемом файле и выберите пункт «Свойства».
- Во вкладке «Основные» ознакомьтесь со строкой «Родительская папка».
- Теперь запустите «Терминал» удобным методом, например, через меню или зажатием комбинации клавиш Ctrl + Alt + T.
- Здесь перейдите к директории через команду
cd /home/user/folder
, где user — имя пользователя, а folder — название папки.
Задействуйте команду cat + название файла
, если хотите просмотреть полное содержимое. Детальные инструкции по работе с этой командой ищите в другой нашей статье по ссылке ниже.
Подробнее: Примеры команды cat в Linux
Благодаря выполнению приведенных выше действий вы можете использовать grep, находясь в нужной директории, без указания полного пути к файлу.
Стандартный поиск по содержимому
Прежде чем переходить к рассмотрению всех доступных аргументов, важно отметить и обычный поиск по содержимому. Он будет полезен в тех моментах, когда необходимо найти простое совпадение по значению и вывести на экран все подходящие строки.
- В командной строке введите
grep word testfile
, где word — искомая информация, а testfile — название файла. Когда производите поиск, находясь за пределами папки, укажите полный путь по примеру/home/user/folder/filename
. После ввода команды нажмите на клавишу Enter. - Осталось только ознакомиться с доступными вариантами. На экране отобразятся полные строки, а ключевые значения будут выделены красным цветом.
- Важно учитывать и регистр букв, поскольку кодировка Linux не оптимизирована для поиска без учета больших или маленьких символов. Если вы хотите обойти определение регистра, впишите
grep -i "word" testfile
. - Как видите, на следующем скриншоте результат изменился и добавилась еще одна новая строка.
Поиск с захватом строк
Иногда пользователям необходимо найти не только точное совпадение по строкам, но и узнать информацию, которая идет после них, например, при отчете об определенной ошибке. Тогда правильным решением будет применить атрибуты. Впишите в консоль grep -A3 "word" testfile
, чтобы включить в результат и три следующие строки после совпадения. Вы можете написать -A4
, тогда будут захвачены четыре строки, ограничений никаких не имеется.
Если вместо -A
вы примените аргумент -B + количество строк
, в результате отобразятся данные, находящиеся до точки вхождения.
Аргумент -С
, в свою очередь, захватывает строки вокруг ключевого слова.
Ниже вы можете увидеть примеры присваивания указанных аргументов. Обратите внимание, что обязательно нужно учитывать регистр и проставлять двойные кавычки.
grep -B3 "word" testfile
grep -C3 "word" testfile
Поиск ключевых слов в начале и в конце строк
Надобность определения ключевого слова, которое стоит в начале или в конце строки, чаще всего возникает во время работы с конфигурационными файлами, где каждая линия отвечает за один параметр. Для того чтобы увидеть точное вхождение в начале, необходимо прописать grep "^word" testfile
. Знак ^ как раз и отвечает за применение этой опции.
Поиск содержимого в конце строк происходит примерно по такому же принципу, только в кавычках следует добавить знак $, и команда обретет такой вид: grep "word$" testfile
.
Поиск чисел
При поиске нужных значений пользователь не всегда имеет информацию касательно точного слова, присутствующего в строке. Тогда процедуру поиска можно производить через числа, что иногда значительно упрощает задачу. Надо лишь задействовать рассматриваемую команду в виде grep "[0-7]" testfile
, где «[0-7]» — диапазон значений, а testfile — название файла для сканирования.
Анализ всех файлов директории
Сканирование всех объектов, находящихся в одной папке, называется рекурсивным. Юзеру требуется применить только один аргумент, который проведен анализ всех файлов папки и выведет на экран подходящие строки и их расположение. Понадобится ввести grep -r "word" /home/user/folder
, где /home/user/folder — путь к директории для сканирования.
Голубым цветом будет отображаться место хранения файла, а если хотите получить строки без этой информации, присвойте еще один аргумент, чтобы команда получилась такой grep -h -r "word" + путь к папке
.
Точный поиск по словам
В начале статьи мы уже говорили об обычном поиске по словам. Однако при таком методе в результатах будут высвечиваться дополнительные комбинации. Например, вы находите слово User, но команда отобразит еще и User123, PasswordUser и другие совпадения, если такие имеются. Чтобы избежать такого результата, присвойте аргумент -w
(grep -w "word" + имя файла или его расположение
).
Выполняется эта опция и при надобности поиска сразу нескольких точных ключевых слов. В таком случае введите egrep -w 'word1|word2' testifile
. Обратите внимание, что в этом случае к grep добавляется буква e, а кавычки ставятся одинарные.
Поиск строк без определенного слова
Рассматриваемая утилита умеет не только находить слова в файлах, но и выводить строки, в которых отсутствует заданное пользователем значение. Тогда перед введением ключевого значения и файла добавляется -v
. Благодаря ей при активации команды вы увидите только соответствующие данные.
Синтаксис grep собрал в себе еще несколько аргументов, о которых можно вкратце рассказать:
-I
— показывать только названия файлов, подходящих под критерий поиска;-s
— отключить уведомления о найденных ошибках;-n
— отображать номер строки в файле;-b
— показывать номер блока перед строчкой.
Ничто не мешает вам применять несколько аргументов для одного нахождения, просто вводите их через пробел, не забывая учитывать регистр.
Сегодня мы детально разобрали команду grep, доступную в дистрибутивах на Linux. Она является одной из стандартных и часто использующихся. Прочитать о других популярных инструментах и их синтаксисе вы можете в отдельном нашем материале по следующей ссылке.
Читайте также: Часто используемые команды в «Терминале» Linux

Отблагодарите автора, поделитесь статьей в социальных сетях.

Чем служит метасимвол ‘{‘ ?