Поиск файлов · 2 min read · Sep 18, 2025
Как выполнить поиск по шаблону в файлах с помощью Grep
В нашей первой статье о команде grep мы рассмотрели довольно много функций, которые предлагает этот инструмент, включая то, как вы можете использовать его для поиска только слов, поиска двух слов, подсчета строк, содержащих совпадающее слово, и многое другое. Помимо этого, инструмент предоставляет еще несколько простых и полезных функций. В этой статье мы обсудим несколько из них.
Пожалуйста, обратите внимание, что все примеры, упомянутые в этом руководстве, были протестированы на Ubuntu 14.04LTS. Также мы будем использовать следующий файл (test_file1.txt) для всех наших примеров, связанных с 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Вот вывод:

Наконец, чтобы напечатать строки вокруг совпадающей строки, используйте командный параметр -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 становится еще более мощным, когда используется с регулярными выражениями, но мы оставим эту тему на другой день.
Get new posts in your inbox
No spam. Unsubscribe anytime.