🧰 GREP в Linux: шпаргалка

🔹 Синтаксис

grep [ОПЦИИ] 'ШАБЛОН' [ФАЙЛ...]
команда | grep [ОПЦИИ] 'ШАБЛОН'


⚙️ Топ-опции (must-have)

-i - без учёта регистра
-n - номер строки
-H - печатать имя файла
-r / -R - рекурсивно по каталогам (-R следует по symlink)
-l - только имена файлов с совпадениями
-L - файлы без совпадений
-v - инверсия (показать НЕ совпавшие строки)
-c - количество совпадений (строк)
-o - вывести только совпавшую часть
-w - совпадение целого слова
-x - совпадение всей строки целиком
--color=auto - подсветка


🧠 Контекст вокруг совпадения

-A 5 - 5 строк после
-B 5 - 5 строк до
-C 5 - 5 строк вокруг

grep -nC 2 'error' /var/log/syslog

🧵 Несколько шаблонов

-e - несколько выражений
-f patterns.txt - шаблоны из файла

grep -E -e 'error' -e 'warn' app.log
grep -f patterns.txt app.log


🔤 Режимы регулярных выражений

🩵BRE (по умолчанию): grep 'a\{2\}'
🩵ERE: grep -E 'a{2,}' (удобнее)
🩵PCRE: grep -P '(?<=id=)\d+' (lookbehind и т.п.)


🧩 Мини-шпаргалка по regex

Якоря и позиции

🩵 ^ начало строки, $ конец строки
🩵 \< начало слова, \> конец слова (в GNU grep часто работает)

Квантификаторы

🩵 ? 0 или 1
🩵 * 0+
🩵 + 1+ (в ERE/PCRE)
🩵 {n}, {n,}, {n,m}

Классы

🩵 . любой символ кроме \n
🩵 [0-9], [A-Za-z], [^...] (не из набора)
🩵 POSIX: [[:digit:]] [[:alpha:]] [[:alnum:]] [[:space:]]


🧪 Практика: логи и инциденты

Ошибки/варнинги

grep -iE 'error|warn|fatal' /var/log/syslog

Сервис по systemd-журналу

journalctl -u nginx --no-pager | grep -i 'error'

Кто ломится по SSH (auth.log)

grep -i 'failed password' /var/log/auth.log | tail

Найти IP в логе

grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' access.log | sort -u

📁 Поиск в конфиге

Рекурсивно, исключая мусор

grep -RIn --exclude-dir={.git,node_modules} --exclude='*.min.*' 'listen' /etc/nginx
Показать строки, где параметр закомментирован/не закомментирован

grep -nE '^\s*#?\s*PermitRootLogin' /etc/ssh/sshd_config

🧨 Трюки: grep + find

Только по *.conf

find /etc -name '*.conf' -print0 | xargs -0 grep -nH 'timeout'
Большие файлы — быстрее

LC_ALL=C grep -n 'pattern' big.log

✅ Быстрые проверки (exit code)

🩵 0 - найдено
🩵 1 - не найдено
🩵 2 - ошибка

grep -q 'pattern' file && echo OK || echo NO

👉 @i_odmin
Просмотры: 887
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти