Skip to content

Команда grep

Описание

Команда grep (от англ. global regular expression print) используется для поиска строк, соответствующих заданному шаблону (в том числе регулярным выражениям), внутри одного или нескольких файлов. Результат выводится на экран, в файл или передаётся другой команде через пайп (|).


Синтаксис

grep [опции] "шаблон" файл(ы)

или

команда | grep [опции] "шаблон"

Примеры использования

1. Поиск строки в файле

grep "ошибка" лог.txt

Найдёт и выведет все строки в файле лог.txt, содержащие слово "ошибка".

2. Поиск с игнорированием регистра

grep -i "привет" файл.txt

Ищет "привет", "Привет", "ПРИВЕТ" и т.д.

3. Рекурсивный поиск в директории

grep -r "TODO" /путь/к/проекту/

Поиск строки "TODO" во всех файлах внутри указанной директории.

4. Показать только совпадающие строки (без контекста)

grep -h "ключ" *.txt

Выведет только совпадающие строки, без указания имён файлов.

5. Показать номера совпадающих строк

grep -n "error" log.txt

Покажет строку и её номер в файле.

6. Инвертировать результат (вывести строки, НЕ содержащие шаблон)

grep -v "успешно" log.txt

Выведет все строки, где нет слова "успешно".

7. Подсчёт количества совпадений

grep -c "404" access.log

Подсчитает, сколько раз встречается слово "404" в файле.

8. Использование регулярных выражений

grep -E "^Error" log.txt

Найдёт строки, начинающиеся с "Error" (ключ -E включает поддержку расширенных регулярок).


Основные опции

Опция Описание
-i Игнорировать регистр
-r, --recursive Рекурсивный поиск в подкаталогах
-n Показывать номера строк
-l Выводить только имена файлов с совпадениями
-v Инвертировать результат (вывести несовпадающие строки)
-c Подсчитать количество совпадающих строк
-h Не показывать имя файла перед совпадением
-s Тихий режим (ничего не выводит, только код возврата)
-E Использовать расширенные регулярные выражения
-F Искать точное совпадение как фиксированную строку (не использовать регулярки)

Полезные примеры с регулярными выражениями

1. Найти строки, начинающиеся с определённого слова

grep -E "^Start" файл.txt

2. Найти строки, заканчивающиеся определённым словом

grep -E "end$" файл.txt

3. Найти строки с цифрами

grep -E "[0-9]" файл.txt

4. Найти строки с email-адресами

grep -E "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b" файл.txt

Полезные заметки

  • grep чувствителен к регистру по умолчанию.
  • Используйте --color=auto для цветовой подсветки совпадений: bash grep --color=auto "слово" файл.txt
  • Для работы с большими файлами можно комбинировать с less: bash grep "pattern" большой_файл.txt | less

Альтернативы и дополнения

Утилита Когда использовать
egrep То же, что grep -E — работает с расширенными регулярками
fgrep Быстрый поиск фиксированных строк (эквивалент grep -F)
rg (ripgrep) Современная альтернатива с высокой скоростью поиска
awk / sed Для сложной обработки текста
find + grep Для поиска файлов и анализа их содержимого

Пример работы

  1. Создадим тестовый файл: bash echo -e "Это тестовая строка\nОшибка найдена\nТест прошёл успешно" > тест.txt

  2. Найдём строки со словом "ошибка": bash grep -i "ошибка" тест.txt Результат: Ошибка найдена


Возвращаемые значения

  • 0: Найдено хотя бы одно совпадение
  • 1: Совпадений нет
  • 2: Ошибка выполнения

Это полезно при использовании grep в скриптах и проверке условий.