## 📚 Основы grep
### Базовый синтаксис:
grep [OPTION...] PATTERNS [FILE...]
grep [OPTION...] -e PATTERNS ... [FILE...]
grep [OPTION...] -f PATTERN_FILE ... [FILE...]
### Ключевые опции программы:
-
--help: Выводит справку-
-V, --version: Показывает версию grep## 🎯 Управление сопоставлением
### Основные опции:
-
-e PATTERNS, --regexp=PATTERNS: Использует PATTERNS как шаблоны-
-f FILE, --file=FILE: Получает шаблоны из FILE-
-i, --ignore-case: Игнорирует регистр-
-v, --invert-match: Инвертирует поиск-
-w, --word-regexp: Ищет целые слова-
-x, --line-regexp: Ищет целые строки### Дополнительные опции:
-
-P, --perl-regexp: Использует Perl-совместимые регулярные выражения-
--no-ignore-case: Отменяет игнорирование регистра## 📊 Управление выводом
### Форматирование результатов:
-
-c, --count: Выводит только количество совпадений-
--color[=WHEN]: Подсвечивает результаты-
-m NUM, --max-count=NUM: Останавливается после NUM совпадений-
-o, --only-matching: Выводит только совпадающие части### Дополнительные опции вывода:
-
-q, --quiet, --silent: Подавляет весь обычный вывод-
-s, --no-messages: Подавляет сообщения об ошибках-
-b, --byte-offset: Печатает смещение в байтах для каждой строки-
-H, --with-filename: Печатает имя файла для каждого совпадения-
-h, --no-filename: Подавляет префикс имени файла в выводе-
--label=LABEL: Отображает LABEL как имя файла для стандартного ввода## 🔬 Контекстный поиск
### Опции для контекста:
-
-A NUM, --after-context=NUM: Выводит NUM строк после совпадения-
-B NUM, --before-context=NUM: Выводит NUM строк до совпадения-
-C NUM, --context=NUM: Выводит NUM строк вокруг совпадения### Дополнительные опции контекста:
-
--group-separator=SEP: Использует SEP как разделитель между группами строк-
--no-group-separator: Не выводит разделитель между группами строк## 📁 Работа с файлами и директориями
### Опции для навигации:
-
-r, --recursive: Рекурсивный поиск-
--include=GLOB: Поиск только в файлах, соответствующих GLOB-
--exclude=GLOB: Исключает файлы, соответствующие GLOB-
--exclude-dir=GLOB: Исключает директории, соответствующие GLOB-
-R, --dereference-recursive: Рекурсивный поиск, следуя по символическим ссылкам### Обработка специальных файлов:
-
-a, --text: Обрабатывает бинарные файлы как текст-
--binary-files=TYPE: Указывает, как обрабатывать бинарные файлы-
-I: Обрабатывает бинарные файлы, как если бы они не содержали совпадений-
-D ACTION, --devices=ACTION: Указывает, как обрабатывать устройства, FIFO и сокеты-
-d ACTION, --directories=ACTION: Указывает, как обрабатывать директории## 🧠 Регулярные выражения
### Основные метасимволы:
-
.: Любой символ-
^: Начало строки-
$: Конец строки-
*: 0 или более повторений-
+: 1 или более повторений-
?: 0 или 1 повторение-
{n}: Ровно n повторений-
{n,}: n или более повторений-
{n,m}: От n до m повторений### Классы символов:
-
[abc]: Любой из перечисленных символов-
[^abc]: Любой символ, кроме перечисленных-
[a-z]: Любой символ в диапазоне-
[:alnum:]: Буквенно-цифровые символы-
[:alpha:]: Буквенные символы-
[:digit:]: Цифровые символы## 💡 Практический пример
$ grep -n -- 'f.*\.c$' *g*.h /dev/null
argmatch.h:1:/* definitions and prototypes for argmatch.c
Этот пример демонстрирует:
- Поиск строк, содержащих 'f' и заканчивающихся на '.c'
- В файлах, имена которых содержат 'g' и заканчиваются на '.h'
- С выводом номеров строк (-n)
## 🚀 Продвинутые техники
### Использование grep с другими командами:
- Поиск процессов:
ps aux | grep "process_name"- Поиск в сжатых файлах:
zgrep "pattern" file.gz### Оптимизация поиска:
- Используйте
-F для поиска фиксированных строк (без регулярных выражений)- Применяйте
-l для вывода только имен файлов с совпадениями### Настройка окружения:
-
GREP_COLORS: Настройка цветов для подсветки вывода-
LC_ALL, LC_COLLATE, LANG: Настройка локали для сортировки и сопоставления символов-
POSIXLY_CORRECT: Включение строгого соответствия стандарту POSIX#Linux_Mastery @LinuxSkill