Примеры команды grep в Linux

Иногда пользователи сталкиваются с необходимостью осуществления поиска определенной информации внутри каких-либо файлов. Часто конфигурационные документы или другие объемные данные вмещают в себе большое количество строк, поэтому вручную отыскать нужные данные не получается. Тогда на помощь приходит одна из встроенных команд в операционные системы на Linux, которая позволит выполнить нахождение строк буквально за считанные секунды.

Используем команду grep в Linux

Что касается различий между дистрибутивами Линукс, в этом случае они не играют никакой роли, поскольку интересующая вас команда grep по умолчанию доступна в большинстве сборок и применяется абсолютно одинаково. Сегодня мы бы хотели обсудить не только действие grep, но и разобрать основные аргументы, которые позволяют значительно упростить процедуру поиска.

Читайте также: Ищем файлы в Linux

Подготовительные работы

Все дальнейшие действия будут производиться через стандартную консоль, она же позволяет открывать файлы только путем указания полного пути к ним либо если «Терминал» запущен из необходимой директории. Узнать родительскую папку файла и перейти к ней в консоли можно так:

  1. Запустите файловый менеджер и переместитесь в нужную папку.
  2. Открытие файлового менеджера в Linux

  3. Нажмите правой кнопкой мыши на требуемом файле и выберите пункт «Свойства».
  4. Переход в свойства папки в операционной системе Linux

  5. Во вкладке «Основные» ознакомьтесь со строкой «Родительская папка».
  6. Узнать родительскую папку файла в операционной системе Linux

  7. Теперь запустите «Терминал» удобным методом, например, через меню или зажатием комбинации клавиш Ctrl + Alt + T.
  8. Запуск терминала для дальнейшей работы в Linux

  9. Здесь перейдите к директории через команду cd /home/user/folder, где user — имя пользователя, а folder — название папки.
  10. Переход к определенной папке через терминал в Linux

Задействуйте команду cat + название файла, если хотите просмотреть полное содержимое. Детальные инструкции по работе с этой командой ищите в другой нашей статье по ссылке ниже.

Применение команды cat в терминале Linux

Подробнее: Примеры команды cat в Linux

Благодаря выполнению приведенных выше действий вы можете использовать grep, находясь в нужной директории, без указания полного пути к файлу.

Стандартный поиск по содержимому

Прежде чем переходить к рассмотрению всех доступных аргументов, важно отметить и обычный поиск по содержимому. Он будет полезен в тех моментах, когда необходимо найти простое совпадение по значению и вывести на экран все подходящие строки.

  1. В командной строке введите grep word testfile, где word — искомая информация, а testfile — название файла. Когда производите поиск, находясь за пределами папки, укажите полный путь по примеру /home/user/folder/filename. После ввода команды нажмите на клавишу Enter.
  2. Обычный поиск через команду grep в Linux

  3. Осталось только ознакомиться с доступными вариантами. На экране отобразятся полные строки, а ключевые значения будут выделены красным цветом.
  4. Отображение результатов обычного поиска через команду grep в Linux

  5. Важно учитывать и регистр букв, поскольку кодировка Linux не оптимизирована для поиска без учета больших или маленьких символов. Если вы хотите обойти определение регистра, впишите grep -i "word" testfile.
  6. Поиск содержимого файла без учета регистра в Linux

  7. Как видите, на следующем скриншоте результат изменился и добавилась еще одна новая строка.
  8. Отображение найденных слов без учета регистра в Linux

Поиск с захватом строк

Иногда пользователям необходимо найти не только точное совпадение по строкам, но и узнать информацию, которая идет после них, например, при отчете об определенной ошибке. Тогда правильным решением будет применить атрибуты. Впишите в консоль grep -A3 "word" testfile, чтобы включить в результат и три следующие строки после совпадения. Вы можете написать -A4, тогда будут захвачены четыре строки, ограничений никаких не имеется.

Отобразить количество строк после ключевого слова в Linux

Если вместо -A вы примените аргумент -B + количество строк, в результате отобразятся данные, находящиеся до точки вхождения.

Отобразить количество строк до ключевого слова в Linux

Аргумент , в свою очередь, захватывает строки вокруг ключевого слова.

Отобразить окружающие строки ключевого слова в Linux

Ниже вы можете увидеть примеры присваивания указанных аргументов. Обратите внимание, что обязательно нужно учитывать регистр и проставлять двойные кавычки.

grep -B3 "word" testfile
grep -C3 "word" testfile

Поиск ключевых слов в начале и в конце строк

Надобность определения ключевого слова, которое стоит в начале или в конце строки, чаще всего возникает во время работы с конфигурационными файлами, где каждая линия отвечает за один параметр. Для того чтобы увидеть точное вхождение в начале, необходимо прописать grep "^word" testfile. Знак ^ как раз и отвечает за применение этой опции.

Искать по ключевому слову в начале строки Linux

Поиск содержимого в конце строк происходит примерно по такому же принципу, только в кавычках следует добавить знак $, и команда обретет такой вид: grep "word$" testfile.

Искать по ключевому слову в конце строки Linux

Поиск чисел

При поиске нужных значений пользователь не всегда имеет информацию касательно точного слова, присутствующего в строке. Тогда процедуру поиска можно производить через числа, что иногда значительно упрощает задачу. Надо лишь задействовать рассматриваемую команду в виде grep "[0-7]" testfile, где «[0-7]» — диапазон значений, а testfile — название файла для сканирования.

Искать диапазон цифровых значений в Linux

Анализ всех файлов директории

Сканирование всех объектов, находящихся в одной папке, называется рекурсивным. Юзеру требуется применить только один аргумент, который проведен анализ всех файлов папки и выведет на экран подходящие строки и их расположение. Понадобится ввести grep -r "word" /home/user/folder, где /home/user/folder — путь к директории для сканирования.

Рекурсивный поиск через команду grep в Linux

Голубым цветом будет отображаться место хранения файла, а если хотите получить строки без этой информации, присвойте еще один аргумент, чтобы команда получилась такой grep -h -r "word" + путь к папке.

Рекурсивный поиск без отображения пути к файлу в Linux

Точный поиск по словам

В начале статьи мы уже говорили об обычном поиске по словам. Однако при таком методе в результатах будут высвечиваться дополнительные комбинации. Например, вы находите слово User, но команда отобразит еще и User123, PasswordUser и другие совпадения, если такие имеются. Чтобы избежать такого результата, присвойте аргумент -w (grep -w "word" + имя файла или его расположение).

Отображать только точные вхождения в Linux

Выполняется эта опция и при надобности поиска сразу нескольких точных ключевых слов. В таком случае введите egrep -w 'word1|word2' testifile. Обратите внимание, что в этом случае к grep добавляется буква e, а кавычки ставятся одинарные.

Отображать несколько точных вхождений в Linux

Поиск строк без определенного слова

Рассматриваемая утилита умеет не только находить слова в файлах, но и выводить строки, в которых отсутствует заданное пользователем значение. Тогда перед введением ключевого значения и файла добавляется -v. Благодаря ей при активации команды вы увидите только соответствующие данные.

Поиск строк не имеющих указанного слова в Linux

Синтаксис grep собрал в себе еще несколько аргументов, о которых можно вкратце рассказать:

Аргументы Описание
-I Показывать только названия файлов, подходящих под критерий поиска
-s Отключить уведомления о найденных ошибках
-n Отображать номер строки в файле
-b Показывать номер блока перед строчкой

Ничто не мешает вам применять несколько аргументов для одного нахождения, просто вводите их через пробел, не забывая учитывать регистр.

Сегодня мы детально разобрали команду grep, доступную в дистрибутивах на Linux. Она является одной из стандартных и часто использующихся. Прочитать о других популярных инструментах и их синтаксисе вы можете в отдельном нашем материале по следующей ссылке.

Читайте также: Часто используемые команды в «Терминале» Linux

Автор статьи Виктор Бухтеев Вам помогли мои советы?
Получить ответ на Email
Уведомить о

1 Ответ
По рейтингу
Новые Старые
Межтекстовые Отзывы
Посмотреть все комментарии
Аноним
21 сентября 2019 18:26

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

Рекомендуем: