Содержание:
Иногда пользователи сталкиваются с необходимостью осуществления поиска определенной информации внутри каких-либо файлов. Часто конфигурационные документы или другие объемные данные вмещают в себе большое количество строк, поэтому вручную отыскать нужные данные не получается. Тогда на помощь приходит одна из встроенных команд в операционные системы на 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
Наш Telegram каналТолько полезная информация
Чем служит метасимвол ‘{‘ ?