Гид по технологиям

Поиск нескольких строк с помощью grep в Linux

• 5 min read • Linux • Обновлено 24 Nov 2025
Поиск нескольких строк с помощью grep
Поиск нескольких строк с помощью grep

Поиск нескольких строк с помощью grep, вывода результатов в терминале

Введение

Терминал Linux полон полезных команд, и одна из самых часто используемых — grep. Аббревиатура grep расшифровывается как Global Regular Expression Print — вывод совпадений, найденных по регулярным выражениям. Команда позволяет быстро находить строки, содержащие нужные последовательности символов, в одном или нескольких файлах.

Этот материал расскажет, как искать несколько строк одновременно, разберёт полезные опции и приведёт практические приёмы для повседневной работы.

Как вызвать терминал и указать путь к файлу

Обычно терминал открывают сочетанием клавиш Ctrl + Alt + T или через меню приложений. В терминале файлы указывают путём относительно домашней директории, где используется тильда ~ и слэши /.

Пример пути к файлу:

~/work/textdocument.txt

Эта запись означает файл textdocument.txt в папке work внутри вашей домашней директории.

Основной приём: поиск нескольких строк

Чтобы найти строки, содержащие одно из нескольких слов, используйте расширенные регулярные выражения с ключом -E и разделитель | между словами. Пример — поиск слов bee и Vanessa в одном файле:

grep -E 'bee|Vanessa' ~/work/beescript.txt

Этот вызов вернёт все строки, в которых встречается bee или Vanessa.

Пример вывода команды grep с подсвеченными совпадениями

Разбор команды

  • grep — сама утилита.
  • -E — включить расширенные регулярные выражения (ERE). Это позволяет использовать альтернацию | без экранирования.
  • ‘bee|Vanessa’ — шаблон поиска в одинарных кавычках; вертикальная черта | означает «или».
  • ~/work/beescript.txt — путь к файлу, где осуществляется поиск.

Поиск в нескольких файлах

Вы можете указать несколько файлов или маску:

grep -E 'bee|Vanessa' ~/work/beescript.txt ~/fun/mybeestory.txt

Или рекурсивно по папке:

grep -R -E 'bee|Vanessa' ~/work/

Пайплайн и сохранение результатов

Результаты удобно отправлять в постраничный просмотр или файл:

grep -E 'bee|Vanessa' ~/work/beescript.txt ~/fun/mybeestory.txt | less

less позволяет прокручивать вывод и искать внутри результатов (нажмите / и введите строку для поиска).

grep -E 'bee|Vanessa' ~/work/beescript.txt ~/fun/mybeestory.txt > beeresults.txt

Перенаправление > сохраняет вывод в файл beeresults.txt для дальнейшего редактирования.

Пример сохранённого вывода grep в файл

Полезные опции grep

  • -i — нечувствительный к регистру поиск (case-insensitive).
  • -w — полные слова (совпадение по слову целиком).
  • -n — показывать номера строк в файле.
  • -H — явно показывать имя файла в выводе (полезно при поиске в нескольких файлах).
  • -r или -R — рекурсивный поиск в каталогах.
  • -F — поиск фиксированных строк (без регулярных выражений), быстрее для простых слов.
  • –color=auto — подсвечивать совпадения в выводе.

Примеры сочетаний:

grep -i -n -E 'bee|Vanessa' ~/work/beescript.txt
grep -R --color=auto -w -E 'error|failed|panic' /var/log/
grep -F -n 'literal phrase' notes.txt

Когда grep с -E не подходит

Важно: регулярные выражения гибкие, но не всегда очевидны. Вот типичные случаи, когда стандартный подход может «не сработать»:

  • Нужно искать большое количество фиксированных строк (сотни шаблонов) — тогда лучше использовать grep -F с файлом шаблонов (-f patterns.txt) или более быстрый инструмент, например ripgrep.
  • Поиск по двоичным файлам — grep по умолчанию предназначен для текстов; используйте strings или специализированные инструменты.
  • Сложные многострочные шаблоны — традиционный grep ищет по строкам; для многострочного поиска удобнее awk, perl или pcregrep.

Альтернативные инструменты

  • ripgrep (rg) — очень быстрый рекурсивный поиск, поддерживает многие опции grep и удобен для больших проектов.
  • ack — ориентирован на разработчиков, умеет игнорировать каталоги вроде .git автоматически.
  • awk — для сложной фильтрации и преобразования строк.
  • sed — для потокового редактирования и поиска с заменой.

Чит-шит: часто используемые шаблоны

  • Ищем несколько слов, одно из которых с разным регистром:
grep -i -E 'error|warning|critical' /var/log/syslog
  • Ищем точные слова и показываем номера строк:
grep -n -w -E 'TODO|FIXME' -R ./project
  • Используем файл шаблонов (patterns.txt содержит список строк, по одной на строку):
grep -F -f patterns.txt *.log

Роль‑ориентированные чек‑листы

  • Для разработчика:

    • Использовать rg для быстрого поиска по репозиторию.
    • Добавлять опции -n и –color=auto для удобства.
    • Прятать бинарные файлы и node_modules через .gitignore или опции поиска.
  • Для системного администратора:

    • Искать ключевые слова в логах: “error”, “failed”, “panic”.
    • Использовать -R для рекурсивного поиска по /var/log/.
    • Сохранять результаты для инцидент-анализа: перенаправление в файл.

Критерии приёмки

  • Команда возвращает строки, содержащие хотя бы одно из указанных слов.
  • При использовании -n каждая строка помечена номером.
  • При поиске в нескольких файлах вывод включает имя файла и соответствующие строки.
  • При перенаправлении в файл соответствующий файл создаётся и содержит ожидаемые совпадения.

Мини‑методология для повторяемого поиска

  1. Сформулируйте список ключевых слов.
  2. Решите, нужен ли регистрозависимый поиск (используйте -i при необходимости).
  3. Выберите режим: фиксированные строки (-F) или регулярные выражения (-E).
  4. Тестируйте на одном файле с опцией -n и –color=auto.
  5. Расширяйте на каталог (-R) и логируйте вывод в файл.

Краткий глоссарий

  • grep — утилита для поиска строк по шаблону.
  • -E — расширенные регулярные выражения.
  • -F — фиксированные строки, быстрое сравнение.
  • -R / -r — рекурсивный поиск в каталогах.

Когда стоит выбрать ripgrep вместо grep

Если у вас большой кодовый репозиторий и требуется очень быстрая индексация, ripgrep (rg) обычно быстрее и автоматически уважает .gitignore. Но grep остаётся универсальным и доступен на большинстве систем без установки.

Короткая инструкция для часто встречающейся задачи

Найти в проекте все упоминания TODO или FIXME, с подсветкой и номерами строк:

grep -R -n --color=auto -E 'TODO|FIXME' .

Итог

grep — легковесный и мощный инструмент для поиска по тексту. Для поиска нескольких строк используйте -E с разделителем | или -F при работе с фиксированными строками. Освоив опции и пайплайны (less, перенаправление в файл), вы сможете быстро анализировать файлы и логи.

Важно: если вы работаете с очень большими объёмами данных или множеством шаблонов, рассмотрите ripgrep или использование grep -F -f patterns.txt.

Короткое резюме

  • grep -E ‘a|b’ — искать одно из нескольких слов.
  • grep -F — для точных подстрок и высокой скорости.
  • Используйте –color=auto, -n и -R для удобства и полноты вывода.

Summary:

  • Освойте базовый синтаксис, затем добавляйте опции.
  • Тестируйте поиск на одном файле перед масштабированием.
  • Рассмотрите альтернативы при работе с большими объёмами данных.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро