TGViewer
LinuxSkill - Сводки с прода и Шпаргалки LinuxSkill - Сводки с прода и Шпаргалки @linuxskill · 10.7K subscribers
Post #482 4.35K
🔍 Мастер grep: Полный гайд по grep (День 8 из 8)!

## 📚 Основы 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
  • 👍 18
  • 🔥 7
More from @linuxskill
  1. Oct 9, 2026💀 df показывает 100%, а du молчит? 5 шагов спасения прода Сервисы падают с «No space left…
  2. Oct 7, 2026Post #1243
  3. Oct 6, 2026GitOps-практики: развёртываем сервис через ArgoCD Классический CI/CD запускает деплой. Но…
  4. Oct 5, 2026Post #1241
  5. Oct 2, 2026📊 Диск тормозит, а iostat показывает норму? Ищем хвост задержек Приложение подвисает на з…
  6. Sep 30, 2026💀 CPU под 100%, а в top пусто? Ловим невидимые процессы через eBPF Сервер греется, в шапк…
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 →