Поиск файлов · 2 min read · Sep 18, 2025

Как выполнить поиск по шаблону в файлах с помощью Grep

В нашей первой статье о команде grep мы рассмотрели довольно много функций, которые предлагает этот инструмент, включая то, как вы можете использовать его для поиска только слов, поиска двух слов, подсчета строк, содержащих совпадающее слово, и многое другое. Помимо этого, инструмент предоставляет еще несколько простых и полезных функций. В этой статье мы обсудим несколько из них.

Пожалуйста, обратите внимание, что все примеры, упомянутые в этом руководстве, были протестированы на Ubuntu 14.04LTS. Также мы будем использовать следующий файл (test_file1.txt) для всех наших примеров, связанных с grep, в этом руководстве:

файл теста grep

Поиск без учета регистра с помощью Grep

По умолчанию grep чувствителен к регистру, что означает, например, что он будет рассматривать ‘ABC’ и ‘abc’ отдельно. Однако, если вы хотите, чтобы ваш поиск не учитывал регистр, вы можете использовать командный параметр -i.

grep -i [строка-для-поиска] [имя-файла]

Например:

grep -i "linux" test_file1.txt

Примечание: Не только шаблон (например, ‘linux’ в приведенном выше примере), страница man для grep говорит, что параметр -i также гарантирует, что чувствительность к регистру для входных файлов также игнорируется. Вот выдержка:

 -i, --ignore-case  
 Игнорировать различия в регистре как в ШАБЛОНЕ, так и во входных файлах. (-i указан POSIX.)

Тем не менее, мы не смогли воспроизвести поведение, связанное с входными файлами, у нас.

Отображение определенных несоответствующих строк с линией, содержащей совпадающую строку в Grep

С помощью инструмента вы также можете отображать заданное количество строк после, перед или вокруг строки, содержащей совпадающую строку.

Используйте командный параметр -A, чтобы напечатать ‘N’ строк после совпадающей строки.

$ grep -A N [строка-для-поиска] [имя-файла]

Например:

$ grep -A 2 "linux" test_file1.txt

Вот вывод вышеуказанной команды

Аналогично, командный параметр -B используется для отображения строк перед совпадающей строкой.

$ grep -B N [строка-для-поиска] [имя-файла]

Например:

$ grep -B 2 "linux" test_file1.txt

Вот вывод:

вывод grep

Наконец, чтобы напечатать строки вокруг совпадающей строки, используйте командный параметр -C.

$ grep -C N [строка-для-поиска] [имя-файла]

Например:

$ grep -C 2 "linux" test_file1.txt

Вот захваченный вывод:

Печать только совпадающих строк в Grep

Вы также можете просто напечатать совпадающую строку на стандартный вывод (вместо полных строк, которые отображаются по умолчанию). Эта функция доступна с помощью командного параметра -o.

$ grep -o [строка-для-поиска] [имя-файла]

Например, если требуется найти строку “linux” в файле (но полные строки не должны быть напечатаны), тогда мы используем следующую команду.

$ grep -o "linux" [имя-файла]

Мы также можем использовать символы подстановки, такие как и . для поиска более чем одной строки. Например, если мы хотим найти группу слов, начинающуюся с “how” и заканчивающуюся на “linux”, тогда мы можем использовать следующую команду.

$ grep -o "how.*linux" [имя-файла]

Отображение позиции в Grep

Команда grep также позволяет вам отображать байтовый смещение строки, в которой встречается совпадающая строка. Эта функция доступна с помощью командного параметра -b. Но для лучшего использования этой опции вы можете использовать ее с командным параметром -o, который отобразит точное положение совпадающей строки.

$ grep -o -b [строка-для-поиска] [имя-файла]

Например:

$ grep -o -b "for" test_file1.txt

Вот вывод:

Заключение

Вам может не понадобиться все эти параметры каждый день, но вы должны хотя бы знать о них, так как никогда не знаешь, когда они могут пригодиться. Grep становится еще более мощным, когда используется с регулярными выражениями, но мы оставим эту тему на другой день.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.