Команда 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 |
Для поиска файлов и анализа их содержимого |
Пример работы
-
Создадим тестовый файл:
bash echo -e "Это тестовая строка\nОшибка найдена\nТест прошёл успешно" > тест.txt
-
Найдём строки со словом "ошибка":
bash grep -i "ошибка" тест.txt
Результат:Ошибка найдена
Возвращаемые значения
0
: Найдено хотя бы одно совпадение1
: Совпадений нет2
: Ошибка выполнения
Это полезно при использовании
grep
в скриптах и проверке условий.