TGViewer
ServerAdmin.ru ServerAdmin.ru @srv_admin · 32.6K subscribers
Post #1833 7.59K
​​Рассмотрел уже много различных скриптов и консольных команд на канале. Почти везде так или иначе используется утилита grep. Отдельно её ни разу не рассматривал и сейчас хочу это исправить.

Какой Linux админ не любит хорошенько грепнуть? Наравне с cat это, пожалуй, самая популярная консольная утилита, которую используешь постоянно. Буквально каждый день. Почти любой консольный вывод я грепаю, чтобы получить только нужную информацию.

Ниже несколько примеров не самых распространённых использований grep, но при этом полезных. Основной функционал, думаю, и так все знают.

Исключение из вывода части строки:
# echo 'raz_dva_tri' | grep -Po '\Kdva_tri'
dva_tri
Начало фразы raz_ вырезали. Здесь используются два ключа: P (perl-regexp) - использование регулярного выражение Perl, o (only-matching) - возвращает только совпадение с образцом. \K - регулярка, которая отбрасывает всё, что перед ней.

Проверка файла на наличие pattern.
# grep 'pattern' file > /dev/null && echo 'String Found'
# grep -q 'pattern' file && echo 'String Found'
Если pattern не будет найден в файле, конструкция && не сработает.

Посчитать количество совпадений pattern в файле:
# grep -c pattern file

Рекурсивный поиск файлов, где найден шаблон:
# grep -lr 'pattern' /web/site.ru
И обратная история, когда нужно вывести файлы, которые не содержат шаблон:
# grep -Lr 'pattern' /web/site.ru

Опять рекурсивный поиск по директории, только выводим не имена файлов, а все совпадающие строки:
# grep -hr 'pattern' /var/log
Бывает нужно когда какой-то ip пробиваешь по нескольким логам.

Когда через grep нужно вывести символы регулярных выражений, их нужно экранировать \ или использовать ключ F (fixed-strings):
# cat /var/log/syslog | grep 'systemd\[1]'
# cat /var/log/syslog | grep -F 'systemd[1]'
Да, я знаю, что не надо тут использовать cat, но я привык. Правильнее сделать так:
# grep -F 'systemd[1]' /var/log/syslog
Ничего не могу с собой поделать. Использую всегда с cat. Причина проста - не всегда нужен grep, а смотреть что-то в консоли я привык через cat. Так что мне проще сначала сделать просто cat, а потом грепнуть вывод в случае необходимости.

Ещё одна полезная опция grep - i (ignore-case) игнорировать регистр шаблона. Будут найдены и заглавные, и строчные совпадения.
# grep -i 'Page.html' /web/site

Вывести рядом с найденной строкой 2 до и 2 после:
# last | grep -A2 -B2 'reboot'

#bash #terminal
  • 👍 56
  • 👎 2
More from @srv_admin
  1. Sep 23, 2026Очередная подборка статей авторов, которые согласились в ней участвовать. Кто не понимает,…
  2. Sep 23, 2026Контейнеры в одном инструменте, виртуалки — в другом, частное облако — вообще отдельная ис…
  3. Sep 23, 2026Расскажу тем, кто не знает, и напомню тем, кто забыл, как я. Не надо в Proxmox в LXC конте…
  4. Sep 22, 2026Недавно случайно заметил любопытную информацию на тему Proxmox VE и новой функциональности…
  5. Sep 22, 2026✔️ Сети для всех — сообщество для тех, кто развивается в сетевом и системном администриров…
  6. Sep 22, 2026Я ранее уже рассказывал, что приобрёл себе домой полноценную серверную платформу на базе S…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →