grep ищет строки по шаблону в файлах или потоке данных.
ripgrep — ультрабыстрая замена grep. Быстрее в 10-50 раз.
Топ-20 самых полезных флагов grep#
| Флаг |
Назначение |
-i |
Игнорировать регистр |
-n |
Показать номера строк |
-c |
Подсчитать количество совпадений |
-v |
Инвертировать поиск (выводить несовпадающие строки) |
-w |
Искать только целые слова |
-x |
Совпадение всей строки |
-o |
Показать только совпавшую часть |
-l |
Показать только имена файлов с совпадениями |
-L |
Показать файлы без совпадений |
-H |
Показать имя файла перед каждой строкой |
-e |
Несколько шаблонов поиска |
-E |
Расширенные регулярки (аналог egrep) |
-P |
Поддержка Perl-совместимых регулярных выражений |
-C N |
Контекст поиска: N строк вокруг |
-A N |
Показать N строк после совпадения |
-B N |
Показать N строк перед совпадением |
-R |
Рекурсивный поиск |
--include |
Искать только в указанных файлах |
--exclude |
Исключить файлы из поиска |
--exclude-dir |
Исключить директории из поиска |
Уровень 1 — Базовые команды (разогрев) 🟢#
| Команда |
Флаг(и) |
Что делает |
grep "hello" file.txt |
(нет) |
Найти слово hello в файле file.txt |
grep "foo" *.txt |
(нет) |
Найти foo во всех .txt файлах |
grep -i "hello" file.txt |
-i |
Игнорировать регистр букв |
grep -n "bar" file.txt |
-n |
Показать номер строки |
grep -c "error" file.txt |
-c |
Показать количество найденных совпадений |
grep -v "ok" file.txt |
-v |
Вывести всё, кроме строк с “ok” |
grep "" file.txt |
(нет) |
Вывести все строки (аналог cat) |
Уровень 2 — Расширенные возможности 🟡#
Больше контроля, сортировка и фильтрация.
| Команда |
Флаг(и) |
Что делает |
grep -w "foo" file.txt |
-w |
Ищет только целые слова, а не подстроки |
grep -x "hello world" file.txt |
-x |
Ищет точное совпадение строки |
grep -l "main()" *.c |
-l |
Показать только имена файлов с совпадениями |
grep -L "main()" *.c |
-L |
Показать только файлы без совпадений |
grep -H "TODO" *.c |
-H |
Показать имя файла перед каждой найденной строкой |
grep -o "foo" file.txt |
-o |
Вывести только совпавшую часть строки |
grep -e "foo" -e "bar" file.txt |
-e |
Искать несколько шаблонов одновременно |
Уровень 3 — Цвет и контекст 🟠#
Красивый вывод + просмотр соседних строк.
| Команда |
Флаг(и) |
Что делает |
grep --color=auto "error" file.txt |
--color |
Подсветка совпадений |
grep -C 3 "error" file.txt |
-C |
Показать 3 строки контекста вокруг совпадения |
grep -B 2 "error" file.txt |
-B |
Показать 2 строки перед совпадением |
grep -A 4 "error" file.txt |
-A |
Показать 4 строки после совпадения |
| `grep –color=always “TODO” file.txt |
less -R` |
Цветной вывод через less |
Уровень 4 — Регулярные выражения 🔵#
Самая мощная часть grep — поддержка regex.
| Команда |
Флаг(и) |
Что делает |
grep "^hello" file.txt |
^ |
Найти строки, начинающиеся с hello |
grep "world$" file.txt |
$ |
Найти строки, оканчивающиеся на world |
grep "[0-9]" file.txt |
[] |
Найти строки, содержащие цифры |
grep "[A-Za-z]" file.txt |
[] |
Найти строки с латинскими буквами |
| `grep -E “foo |
bar” file.txt` |
-E |
| `grep -E “(cat |
dog)” file.txt` |
-E |
grep -E "[0-9]{3}" file.txt |
-E |
Найти последовательность из 3 цифр |
grep -P "\d{2,4}" file.txt |
-P |
Использовать PCRE-регулярки (как в Perl) |
Уровень 5 — Сочетания с другими командами 🟣#
Комбинируем grep с find, xargs, sort и awk.
| Команда |
Что делает |
find . -type f -name "*.log" -exec grep -H "ERROR" {} \; |
Найти ERROR во всех логах |
grep -r "main()" src/ |
Рекурсивный поиск по папке src/ |
grep -R --include="*.c" "printf" src/ |
Искать только в .c файлах |
grep -R --exclude-dir=".git" "TODO" . |
Искать во всех файлах, кроме .git |
| `ps aux |
grep ssh` |
| `dmesg |
grep -i usb` |
| `history |
grep ssh` |
Уровень 6 — Абсолютное безумие 🔴#
Оптимизация, многопоточность, поиск по бинарникам.
| Команда |
Что делает |
grep -R "TODO" /etc/ 2>/dev/null |
Скрыть ошибки доступа при рекурсивном поиске |
grep --binary-files=text "magic" core.dump |
Поиск текста внутри бинарных файлов |
grep -Z "foo" file.txt |
Вывод с нулевыми разделителями, полезно для xargs -0 |
grep -r --exclude="*.min.js" "function" |
Исключить минифицированные JS-файлы |
grep -r --exclude-dir={node_modules,dist} "API_KEY" |
Исключить целые папки |
grep --line-buffered "pattern" |
Полезно для живого мониторинга логов |
| `tail -f app.log |
grep –line-buffered “ERROR”` |
| `grep -R –color=always “FIXME” |
less -R` |
Уровень 7 — Гуру-режим 🟤#
Сложные приёмы, ускорение и продвинутое использование.
| Команда |
Что делает |
grep -P -n "(?<=user=)\w+" access.log |
PCRE: найти имя пользователя после user= |
| `grep -E “ERROR |
WARNING” server.log` |
grep -E -o "https?://[a-zA-Z0-9./_-]*" file.txt |
Вытянуть все ссылки из файла |
grep -r --include="*.{c,h}" "malloc" src/ |
Искать только в .c и .h файлах |
grep -r --exclude-dir=".git" --include="*.py" "def " |
Искать все функции в .py файлах |
| `grep –color=always -n “.*” |
less -R` |
| `grep -E “^$” file.txt |
wc -l` |
grep -R --exclude-dir={.git,node_modules} "password" / |
Найти все места, где может храниться пароль |