12 практических примеров команды grep в Linux

12 практических примеров команды grep в Linux

Возможно, у вас уже возникала ранее необходимость найти в файлах заданный набор текста (строку или шаблон). Специально для решения подобной задачи существует такая интересная команда, как команда grep.

Содержание:

  1. Что такое утилита grep и как ее установить
  2. Примеры интересного использования команды
    1. Поиск необходимых файлов
    2. Фильтрация найденных командой grep файлов
    3. Обнаружение всех файлов с расширением .mp3
    4. Отображение строк до или после строки с результатом поиска
    5. Выведение заданного числа всех соседних строк
    6. Подсчет числа строк, содержащих искомое выражение
    7. Указание номера искомой строки в файле
    8. Рекурсивный поиск строки по всем каталогам
    9. Выведение точного вхождения выражения как отдельного слова
    10. Совпадения в архивах Gzip
    11. Соответствие более сложному регулярному выражению в файлах
    12. Выявление целой строки, соответствующей выражению
  3. Выводы

Что такое утилита grep и как ее установить

Grep — это эффективная утилита для поиска, встроенная в каждый из популярных дистрибутивов ОС GNU/Linux. Однако даже в том маловероятном случае, если данное приложение отсутствует в вашей сборке, его можно без лишних сложностей установить. И на это способен встроенный менеджер пакетов (apt-get в дистрибутивах Debian и Ubuntu, yum в дистрибутивах RHEL, Fedora и CentOS).

В Debian и Ubuntu:

 

В RHEL, CentOS и Fedora:

Примеры интересного использования команды

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

Поиск необходимых файлов

Допустим, что вы установили на свой ПК популярный дистрибутив Ubuntu. И в дальнейшем планируете добавить в библиотеку Python определенные скрипты. С другой стороны, на веб-сайте с необходимыми материалами указано, что они есть для разных версий языка программирования Python. Тогда как вы не знаете точно, какая именно версия присутствует в вашей версии Ubuntu. А также — какие дополнительные модули идут в комплекте. Для выяснения таких подробностей можно использовать следующую команду:

 

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

 

Прежде всего остального, команда dpkg -l выводит на экран установленные пакеты с расширением *.deb. Результат вывода с помощью символа «|» передается по конвейеру grep -i python. При этом флаг -i позволяет команде не обращать внимания на регистр. Стоит отметить, что команды Linux вообще и grep в частности чувствительны к нему. В целом, стоит выработать в себе привычку к использованию флага -i, если цель поиска, конечно, не указывается более конкретно.

Фильтрация найденных командой grep файлов

Помимо всего прочего, команда grep предназначена для фильтрации результатов поиска внутри одного или нескольких файлов. Например, в том случае, если у ваш веб-сервер Apache испытывает проблемы. И вы решили обратиться на форум в Интернете для поиска возможных вариантов решения. Предположим, что члены сообщества посоветовали вам показать им содержимое файла /etc/apache2/sites-available/default-ssl. Однако данный файл содержит помимо всего прочего и закомментированные строки. К счастью, с нашей командой их можно отфильтровать:

 

Стоит отметить, что флаг -v предназначен для того, чтобы выводить на экран противоположный результат фильтрации. Прежде всего, применительно к нашему примеру будут выведены те строки, которые не соответствуют выражению “#” (закомментированные).

Обнаружение всех файлов с расширением .mp3

Команда grep незаменима в случае фильтрации результатов из stdout (потока №1). Допустим, на вашем ПК имеется каталог, содержащий множество музыкальных файлов, соответствующих различным форматам. И по какой-то причине вам понадобилось вывести список всех файлов с расширением *.mp3. Которые помимо всего прочего созданы исполнителем ABC и не являются ремиксами. В результате можно посоветовать использовать команду find, дополненную несколькими конструкциями с grep:

 

Поиском и выводом всех файлов, имеющих расширение *.mp3 занимается команда find. После чего через конвейер он передается сначала команде grep с флагом -i (проверяет наличие имени исполнителя «ABC»). После чего следующая по конвейеру команда grep с флагами -vi отсеивает из вывода результаты, содержащие слово «remix».

Отображение строк до или после строки с результатом поиска

Стоит упомянуть еще несколько флагов — -A и -B. Прежде всего, их назначение состоит в том, чтобы выводить совпадающую строку и указанное число соседних строк. А именно — находящихся перед или после найденного результата. Наверное, проще всего запомнить их назначение так:

  • -A — от слова «after»;
  • -B —от слова «before».

Пример использования флагов -A и -B:

Выведение заданного числа всех соседних строк

Скорее всего, более удобен флаг -C для команды grep. Вместо того, чтобы проверять и выводить строки, которые появляются только до или только после нужного результата, он позволяет вести поиск в обоих направлениях:

Подсчет числа строк, содержащих искомое выражение

Безусловно, команда Grep способна и просто посчитать количество совпадений с заданным выражением:

Указание номера искомой строки в файле

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

Рекурсивный поиск строки по всем каталогам

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

Выведение точного вхождения выражения как отдельного слова

Стоит отметить, что в команде grep предусмотрен специальный флаг -w. Который позволяет найти строку, в которой искомое выражение присутствует в виде отдельного слова:

 

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

Совпадения в архивах Gzip

Gzip (GNU Zip) — это популярное в среде пользователей Linux приложение. Которое предназначено для сжатия и декомпрессии файлов по алгоритму Deflate. К счастью, существует техническая возможность осуществлять поиск по таким сжатым архивам. Прежде всего, для этого нужно воспользоваться командой zgrep. К слову, во всем остальном она действует точно так же, как и обычная команда grep:

Соответствие более сложному регулярному выражению в файлах

Egrep — это еще одна родственная команда с дополнительными возможностями. В частности, с ее помощью можно вести поиск расширенных глобальных регулярных выражений. В частности, вести поиск можно с использованием метасимволов — +? | или ().

Рекомендуется к прочтению: какая разница между Grep, Egrep и Fgrep в Linux?

Команда egrep незаменима при попытке найти что-то в исходном коде. Стоит отметить, что функции данной команды можно использовать и в обычном варианте grep. Для этого можно воспользоваться флагом -E:

Выявление целой строки, соответствующей выражению

Еще одна производная команда — fgrep — выводит строку целиком, если она полностью соответствует искомому шаблону. Как и в примерах выше, аналогичный результат даст команда grep с флагом -F. При использовании флага -f команда fgrep будет брать искомые шаблоны из заданного файла и искать их в другом файле:

Выводы

Конечно, возможности команды grep намного шире, чем можно решить, изучив приведенные примеры. Помимо всего прочего, grep может стать основой для написания сложных скриптов (сценариев оболочки) и заданий для cron.

Будьте изобретательны, экспериментируйте с примерами применения со страниц нашего руководства! И придумывайте выражения для grep, которые послужат вашим собственным целям!

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Поиск по сайту
Лучшее
Популярное
Рубрики
Меню