Иногда пользователи сталкиваются с необходимостью осуществления поиска определенной информации внутри каких-либо файлов. Часто конфигурационные документы или другие объемные данные вмещают в себе большое количество строк, поэтому вручную отыскать нужные данные не получается. Тогда на помощь приходит одна из встроенных команд в операционные системы на Linux, которая позволит выполнить нахождение строк буквально за считанные секунды.
Используем команду grep в Linux
Что касается различий между дистрибутивами Линукс, в этом случае они не играют никакой роли, поскольку интересующая вас команда по умолчанию доступна в большинстве сборок и применяется абсолютно одинаково. Сегодня мы бы хотели обсудить не только действие , но и разобрать основные аргументы, которые позволяют значительно упростить процедуру поиска.
Подготовительные работы
Все дальнейшие действия будут производиться через стандартную консоль, она же позволяет открывать файлы только путем указания полного пути к ним либо если запущен из необходимой директории. Узнать родительскую папку файла и перейти к ней в консоли можно так:
- Запустите файловый менеджер и переместитесь в нужную папку.
- Нажмите правой кнопкой мыши на требуемом файле и выберите пункт .
- Во вкладке ознакомьтесь со строкой .
- Теперь запустите удобным методом, например, через меню или зажатием комбинации клавиш .
- Здесь перейдите к директории через команду cd /home/user/folder, где — имя пользователя, а — название папки.
Задействуйте команду cat + название файла, если хотите просмотреть полное содержимое. Детальные инструкции по работе с этой командой ищите в другой нашей статье по ссылке ниже.
Подробнее: Примеры команды cat в Linux
Благодаря выполнению приведенных выше действий вы можете использовать , находясь в нужной директории, без указания полного пути к файлу.
Стандартный поиск по содержимому
Прежде чем переходить к рассмотрению всех доступных аргументов, важно отметить и обычный поиск по содержимому. Он будет полезен в тех моментах, когда необходимо найти простое совпадение по значению и вывести на экран все подходящие строки.
- В командной строке введите grep word testfile, где — искомая информация, а — название файла. Когда производите поиск, находясь за пределами папки, укажите полный путь по примеру /home/user/folder/filename. После ввода команды нажмите на клавишу .
- Осталось только ознакомиться с доступными вариантами. На экране отобразятся полные строки, а ключевые значения будут выделены красным цветом.
- Важно учитывать и регистр букв, поскольку кодировка 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, где — диапазон значений, а — название файла для сканирования.
Анализ всех файлов директории
Сканирование всех объектов, находящихся в одной папке, называется рекурсивным. Юзеру требуется применить только один аргумент, который проведен анализ всех файлов папки и выведет на экран подходящие строки и их расположение. Понадобится ввести grep -r «word» /home/user/folder, где — путь к директории для сканирования.
Голубым цветом будет отображаться место хранения файла, а если хотите получить строки без этой информации, присвойте еще один аргумент, чтобы команда получилась такой grep -h -r «word» + путь к папке.
Точный поиск по словам
В начале статьи мы уже говорили об обычном поиске по словам. Однако при таком методе в результатах будут высвечиваться дополнительные комбинации. Например, вы находите слово , но команда отобразит еще и User, User и другие совпадения, если такие имеются. Чтобы избежать такого результата, присвойте аргумент -w (grep -w «word» + имя файла или его расположение).
Выполняется эта опция и при надобности поиска сразу нескольких точных ключевых слов. В таком случае введите egrep -w ‘word1|word2’ testifile. Обратите внимание, что в этом случае к добавляется буква , а кавычки ставятся одинарные.
Поиск строк без определенного слова
Рассматриваемая утилита умеет не только находить слова в файлах, но и выводить строки, в которых отсутствует заданное пользователем значение. Тогда перед введением ключевого значения и файла добавляется -v. Благодаря ей при активации команды вы увидите только соответствующие данные.
Синтаксис собрал в себе еще несколько аргументов, о которых можно вкратце рассказать:
- -I — показывать только названия файлов, подходящих под критерий поиска;
- -s — отключить уведомления о найденных ошибках;
- -n — отображать номер строки в файле;
- -b — показывать номер блока перед строчкой.
Ничто не мешает вам применять несколько аргументов для одного нахождения, просто вводите их через пробел, не забывая учитывать регистр.
Сегодня мы детально разобрали команду , доступную в дистрибутивах на Linux. Она является одной из стандартных и часто использующихся. Прочитать о других популярных инструментах и их синтаксисе вы можете в отдельном нашем материале по следующей ссылке.
Мы рады, что смогли помочь Вам в решении проблемы.
Помимо этой статьи, на сайте еще 13047 полезных инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам. Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.