VK Cloud

grep: команда для поиска текста в Linux

17 сентября 2026 г.
Александр Иванов
Автор статьи
_blog_head_10.png

Что такое grep и для чего он нужен

grep — утилита Unix и Linux для поиска строк, соответствующих регулярному выражению, в текстовых файлах или потоке ввода. Название пришло из команды текстового редактора ed: g/re/p — globally search for a regular expression and print.

Утилиту создал Кен Томпсон для ранних версий Unix. grep входит в стандарт POSIX.1 как обязательная утилита и по умолчанию доступен в любом дистрибутиве Linux и в macOS.

Базовый синтаксис

Общая форма вызова: grep [OPTION]... PATTERNS [FILE].... Без указания файла grep читает стандартный ввод (stdin), что позволяет встраивать его в конвейеры (pipe): вывод одной команды передаётся на вход grep.

Код возврата удобен в скриптах:

КодЗначение
0совпадения найдены
1совпадений нет
2ошибка (например, неверный синтаксис шаблона или недоступный файл)

Типы регулярных выражений

grep поддерживает три типа регулярных выражений:

  • BRE (Basic Regular Expressions) — режим по умолчанию;
  • ERE (Extended Regular Expressions) — флаг -E;
  • PCRE (Perl Compatible Regular Expressions) — флаг -P.

Четвёртый режим — фиксированные строки (флаг -F): шаблон сопоставляется буквально, метасимволы не интерпретируются.

Способ сравнения

  • -i — игнорировать регистр;
  • -v — инвертировать совпадение (вывести строки, НЕ содержащие шаблон);
  • -c — показать только количество совпавших строк;
  • -n — добавить номера строк к результатам.

Область поиска

  • -r / -R — рекурсивный обход каталога и подкаталогов; -R дополнительно следует по символическим ссылкам;
  • -l — вывести только имена файлов с совпадениями;
  • -L — вывести только имена файлов без совпадений;
  • --include / --exclude — фильтровать файлы по маске имени при рекурсивном поиске.

Точность совпадения и контекст

  • -w — совпадение только по целым словам;
  • -x — совпадение должно занимать всю строку;
  • -o — вывести только совпавший фрагмент, а не строку целиком;
  • -A NUM, -B NUM, -C NUM — показать NUM строк после, до и вокруг совпадения соответственно.

Практические примеры

Поиск слова в файле:

grep 'ошибка' log.txt

Поиск без учёта регистра:

grep -i 'error' log.txt

Рекурсивный поиск по проекту с номерами строк:

grep -rn 'TODO' ./src

Подсчёт вхождений:

grep -c '404' access.log

Фильтрация вывода другой команды через конвейер:

ps aux | grep nginx

ERE для сложных шаблонов (проверка формата телефона):

grep -E '^[0-9]{3}-[0-9]{4}$' phones.txt

Инверсия: убрать комментарии из конфигурационного файла:

grep -v '^#' config.conf

Родственные утилиты и отличия

egrep и fgrep — устаревшие обёртки, эквивалентные grep -E и grep -F. В старых скриптах они ещё встречаются, но в новом коде лучше использовать явные флаги.

ripgrep (rg) — быстрая альтернатива grep, которая автоматически пропускает файлы из .gitignore при поиске по репозиторию.

find и grep решают разные задачи: find ищет файлы по именам и атрибутам, grep — по содержимому файлов.

Спецсимволы в BRE и ERE

В базовых регулярных выражениях + и ? — обычные символы; чтобы они работали как квантификаторы, их нужно экранировать обратным слэшем (+, ?). В ERE экранирование не требуется.

Шаблон, начинающийся с дефиса

grep может принять его за флаг. Решение: поставить -- перед шаблоном или использовать -e.

Работа с большими файлами

--color=auto подсветит совпадения, а -m NUM ограничит число выведенных строк — оба флага экономят время при отладке.

Оставьте заявку, чтобы получить консультацию

Наши специалисты свяжутся с вами в ближайшее время и ответят на все вопросы.

            Узнавайте о выходе новых статей в блоге первыми!

            Будем держать в курсе новостей и облачных трендов

            section-subscribe_2x.png
              section-subscribe_2x.png
              Теги: Linux, командная строка, регулярные выражения, grep, ripgrep
              Ссылка скопирована
              Поделиться
              40+ готовых сервисов