12-Practical-Examples-of-Linux-grep-Command

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

Новости

Вы когда-нибудь сталкивались с задачей поиска определенной строки или шаблона в файле, но понятия не имели, с чего начать этот поиск? Ну тогда команда grep придет к вам на помощь!

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

$ sudo apt-get install grep <strong>#Debian/Ubuntu</strong>
$ sudo yum install grep <strong>#RHEL/CentOS/Fedora</strong>

 

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

 

1. Поиск файлов

Предположим, что вы только что установили новую версию Ubuntu на ваш компьютер и что вы собираетесь добавить к Python некоторые скрипты. Вы проводите поиск в Интернете, и видите, что используются две разные версии Python, и вы не знаете, какой из них был установлен в вашей системе установщиком Ubuntu, и устанавливал ли он какие-либо дополнительные модули. Чтобы с этим разобраться, просто запустите эту команду:

# dpkg -l | grep -i python

 

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

ii python2.7 2.7.3-0ubuntu3.4 Interactive high-level object-oriented language (version 2.7)
ii python2.7-minimal 2.7.3-0ubuntu3.4 Minimal subset of the Python language (version 2.7)
ii python-openssl 0.12-1ubuntu2.1 Python wrapper around the OpenSSL library
ii python-pam 0.4.2-12.2ubuntu4 A Python interface to the PAM library

 

Сначала мы запустили dpkg -l, чтобы вывести установленные *.deb пакеты в вашей системе. Далее мы передали этот вывод в grep -i python. Опция -i используется, чтобы игнорировать -case, поскольку grep чувствителен к регистру. Использование опции -i — хорошая привычка, если вы конечно, не пытаетесь выполнить более конкретный поиск.

 

 

2. Поиск и фильтрация файлов

Grep также может использоваться для поиска и фильтрации внутри одного или нескольких файлов. Давайте рассмотрим эту функцию:

У вас возникли проблемы с вашим веб-сервером Apache, и вы обратились к одному из многих форумов в сети с просьбой о помощи. Добрая душа, которая вам ответила, попросила вас опубликовать содержимое вашего файла /etc/apache2/sites-available/default-ssl. Разве вам не было бы не легче, если бы вы могли просто удалить все прокомментированные строки? А ведь вы это можете! Просто выполните эту команду:

# grep –v “#”  /etc/apache2/sites-available/default-ssl

 

Опция -v указывает grep инвертировать свой вывод, что означает, что вместо печати совпадающих строк  grep сделает противоположное и выведутся строки, которые не соответствуют выражению, в этом случае — прокомментированные строки.

 

 

3. Найти все файлы .mp3

Grep может быть очень полезен для фильтрации из stdout. Например, предположим, что у вас есть целая папка, полная музыкальных файлов разных форматов. Вы хотите найти все файлы *.mp3 у исполнителя JayZ, но вы не хотите никаких ремикс-треков. Использование команды find с несколькими опциями grep запросто проделает этот трюк:

# find . –name “*.mp3” | grep –i JayZ | grep –vi “remix”

 

В этом примере мы используем find для вывода всех файлов с расширением *.mp3, связывая поиск с grep -i, чтобы отфильтровать и вывести все файлы с именем «JayZ», а затем еще одна опция для grep -vi, которая фильтрует и не выводит все имена файлов со строкой «remix».

 

 

4. Отображение количества строк до или после строки поиска

Еще пара опций — это флажки -A и -B, которые отображают согласованные строки и количество строк, которые присутствуют до или после строки поиска. В то время как справочная страница дает более подробное объяснение, нам легче запомнить параметры как -A = after и -B = before:

# ifconfig | grep –A 4 eth0
# ifconfig | grep -B 2 UP

 

 

5. Вывод количества строк совпадения

Параметр -C для grep вместо того, чтобы проверять строки, которые появляются до или после искомой строки, он проверяет строки в любом направлении:

# ifconfig | grep –C 2 lo

 

 

6. Количество совпадений

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

# ifconfig | grep –c inet6

 

 

7. Поиск файлов по заданным номерам строк

Параметр -n для grep очень полезен при отладке файлов во время компиляции. Он отображает номер строки в файле поиска:

# grep –n “main” setup..py

 

 

8. Поиск рекурсивной строки во всех каталогах

Если вы хотите найти строку в текущем каталоге вместе со всеми подкаталогами, вы можете указать параметр -r для поиска рекурсивно:

# grep –r “function” *

 

 

9. Поиск по всему шаблону

Опции -w для grep ищет весь шаблон, который находится в строке. Например, используя:

# ifconfig | grep –w “RUNNING”

 

 

Выведет строку, содержащую шаблон в кавычках. С другой стороны, если вы попытаетесь:

# ifconfig | grep –w “RUN”

 

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

 

 

10. Поиск строки в архивах файлах Gzip

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

# zgrep –i error /var/log/syslog.2.gz

 

 

11. Поиск соответствия регулярному выражению в файлах.

Egrep — это еще одна производная, которая означает «Расширенное глобальное регулярное выражение». Она распознает дополнительные метасимволы-выражения, такие как +? | а также ().

 

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

 

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

# grep -E

 

 

12. Поиск строк по фиксированному шаблону

Fgrep ищет файл или список файлов для фиксированной строки шаблона. Это то же самое, что и grep -F. Обычный способ использовать fgrep — передать ему файл шаблонов:

# fgrep –f file_full_of_patterns.txt file_to_search.txt

 

 

Это всего лишь отправная точка для команды 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, подайте заявку или получите бесплатную консультацию.
Новости

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

Обнаружены уязвимости в составе Vertiv Avocent MergePoint EMS BMC, информационная безопасность курсы повышения квалификации Санкт-Петербург

Обнаружены уязвимости в составе Vertiv Avocent MergePoint EMS BMC, информационная безопасность курсы повышения квалификации Санкт-Петербург

107
0
Недавно специалисты из Eclypsium смогли обнаружить существенные уязвимости, которые мешали работе Gigabyte и Lenovo. В этих компаниях была нарушена информационная…
Защита информации: использование уязвимостей

Защита информации: использование уязвимостей, обучение техническая защита информации Санкт-Петербург

76
0
Самый распространенный способ проникновения злоумышленника в операционную систему компьютера или смартфона — это использование уязвимостей. Существует даже специальное обучение техническая…

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

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

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

Самое читаемое
Меню