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

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

4 min read Linux команды Обновлено 17 Apr 2026
Grep: поиск нескольких строк в Linux
Grep: поиск нескольких строк в Linux

TL;DR

grep — лёгкий и мощный инструмент для поиска текста в файлах. Чтобы искать сразу несколько строк, используйте расширенные регулярные выражения: например, grep -E ‘word1|word2’ файл. Для больших проектов удобнее -F (fixed strings), -f (файл с шаблонами), рекурсия -r и альтернативы вроде ripgrep для скорости.

Пример поиска нескольких строк командой grep в терминале

Что такое grep

grep — это утилита командной строки в Unix/Linux для поиска строк, соответствующих шаблону. Коротко: вводите шаблон, указываете файлы — получаете строки с совпадениями.

Как искать несколько строк — базовый пример

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

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

Разбор:

  • -E — включить расширенные регулярные выражения (ERE), чтобы писать | для «или».
  • ‘bee|Vanessa’ — шаблон: либо “bee”, либо “Vanessa”.
  • ~/work/beescript.txt — файл для поиска.

Этот вызов вернёт все строки, где встречается любое из слов.

Вывод результата команды grep, поиск совпадений

Полезные опции и расширения

Ниже — набор часто используемых опций, которые повышают удобство и точность поиска.

  • -i — нечувствительность к регистру.
  • -w — целые слова (например, “bee” не совпадёт с “beef”).
  • -n — показывать номера строк.
  • -H — показывать имя файла (полезно при поиске по нескольким файлам).
  • -r или -R — рекурсивный поиск в каталоге.
  • -F — искать фиксированные строки (быстрее, без регулярных выражений).
  • -f patterns.txt — загрузить шаблоны из файла (каждая строка — отдельный шаблон).
  • -P — использовать Perl-совместимые регулярные выражения (не во всех реализациях гарантировано).

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

# Искать в нескольких файлах и показать номера строк
grep -nE 'bee|Vanessa' ~/work/beescript.txt ~/fun/mybeestory.txt

# Рекурсивный поиск по папке, игнорировать регистр
grep -riE 'bee|Vanessa' ~/projects/bee-archive

# Использовать файл с шаблонами (один шаблон на строку)
grep -F -f ~/work/patterns.txt ~/documents/*.txt

# Показать только имена файлов, где есть совпадение
grep -lE 'bee|Vanessa' ~/projects/**

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

Навигация и вывод результатов

Результаты можно просмотреть удобнее или сохранить:

# Пролистывать результат
grep -E 'bee|Vanessa' ~/work/beescript.txt ~/fun/mybeestory.txt | less

# Сохранить результат в файл
grep -E 'bee|Vanessa' ~/work/beescript.txt ~/fun/mybeestory.txt > beeresults.txt

less позволяет прокручивать вывод, искать по результатам и копировать фрагменты.

Фрагмент вывода команды grep, результаты поиска

Когда grep не подходит и альтернативы

grep очень полезен, но у него есть лимиты:

  • Большие кодовые базы/логи: может быть медленным при сканировании сотен гигабайт.
  • Сложные шаблоны с lookaround: лучше использовать -P или Perl/awk.
  • Поиск бинарных/сжатых файлов: нужны специализированные инструменты.

Альтернативы:

  • ripgrep (rg) — быстрый и удобный для больших деревьев файлов.
  • The Silver Searcher (ag) — быстрый, ориентирован на код.
  • awk/sed — когда нужно не только искать, но и обрабатывать строки.

Рекомендации по производительности

  • Используйте -F для поиска по фиксированным строкам — это быстрее, чем регулярки.
  • Обходите большие бинарные файлы — добавляйте –binary-files=without-match.
  • Ограничьте области поиска с помощью –include/–exclude и find + xargs, чтобы не сканировать всё подряд.

Пример с find + xargs:

find ~/projects -type f -name '*.txt' -print0 | xargs -0 grep -nE 'pattern1|pattern2'

Файлы шаблонов и управление сложными паттернами

Если шаблонов много, поместите их в файл patterns.txt — один шаблон на строку:

bee
Vanessa
nectar
"hive"

И затем:

grep -F -f patterns.txt -n ~/work/**/*.txt

Для случаев, когда шаблоны содержат спецсимволы regex, -F решает проблему, ищет буквально.

Модель принятия решения: -E vs -F vs -P

  • Используйте -F, когда ищете чистые строки (без рег. выражений) — это быстрее и безопаснее.
  • Используйте -E для простых регулярных выражений (|, +, ?). Это удобно и переносимо.
  • Используйте -P, если нужны Perl-совместимые фичи (lookahead/lookbehind), но проверяйте поддержку.
flowchart TD
  A[Нужен поиск] --> B{Шаблон содержит спецсимволы?}
  B -- Нет --> C[Использовать -F]
  B -- Да --> D{Требуются сложные конструкции?}
  D -- Нет --> E[Использовать -E]
  D -- Да --> F[Использовать -P или ripgrep/awk]

Чек-лист по роли

  • Разработчик:

    • Проверить -n и -H для отладки.
    • Использовать –include для фильтра типов файлов.
    • Предпочесть ripgrep для больших репозиториев.
  • Системный администратор:

    • Искать по логам с –binary-files=without-match.
    • Использовать find + xargs для контроля зон поиска.
    • Автоматизировать в скриптах с проверкой кода возврата.
  • Аналитик данных:

    • Использовать -o для вывода только совпадений (если нужно подсчитать).
    • Экспортировать результаты в CSV через awk при необходимости.

Примеры тест-кейсов и критерии приёмки

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

  • grep возвращает все строки, содержащие хотя бы один из шаблонов.
  • Номера строк и имена файлов отображаются при поиске по нескольким файлам.
  • Для большого каталога время выполнения укладывается в приемлимый порог (определяется командой).

Тест-кейсы:

  1. Файл с известными строками — grep находит все ожидаемые совпадения.
  2. Несколько файлов — grep -l находит только файлы с совпадениями.
  3. Шаблоны со спецсимволами — проверка с -F и без, чтобы убедиться в поведении.

Подсказки по безопасности и приватности

  • При поиске логов следите за правами доступа: не выводите в открытый файл конфиденциальные данные.
  • Не сохраняйте постоянные результаты поиска в общедоступные каталоги.

Быстрый справочник (cheat sheet)

  • grep -E ‘a|b’ file — несколько вариантов через |.
  • grep -F -f patterns.txt files — шаблоны из файла, поиск буквальный.
  • grep -riE ‘error|fail’ /var/log — рекурсивный нечувствительный поиск.
  • rg ‘error|fail’ — альтернатива (очень быстро для больших деревьев файлов).

Когда следует делать откат или другой инструмент

Если grep слишком медленный или шаблоны слишком сложны, используйте ripgrep или напишите скрипт на Python/Perl/awk для постобработки и фильтрации.

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

grep остаётся базовым и надёжным инструментом для поиска текста. Для поиска нескольких строк используйте | в ERE или файл с шаблонами. Для больших объёмов данных рассматривайте -F, фильтрацию по включению/исключению и современные альтернативы вроде ripgrep.

Важно: начинайте с простых опций, проверяйте результаты на небольшом наборе файлов, а затем масштабируйте поиск.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

CSS font-family: как менять шрифты на сайте
Frontend

CSS font-family: как менять шрифты на сайте

График амортизации кредита в Excel — пошагово
Финансы

График амортизации кредита в Excel — пошагово

Разгон Raspberry Pi 4 — безопасный пошаговый гид
Аппаратное обеспечение

Разгон Raspberry Pi 4 — безопасный пошаговый гид

Как запустить Windows 11 на Mac — варианты и советы
Mac

Как запустить Windows 11 на Mac — варианты и советы

Мошенничество с возвратом средств через техподдержку
Безопасность

Мошенничество с возвратом средств через техподдержку

Диагональная обрезка в Canva — как сделать эффектно
Дизайн

Диагональная обрезка в Canva — как сделать эффектно