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 от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University.

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.

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

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

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

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

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