Skip to content

Grep поиск внутри файлов

Grep поиск внутри файлов

Синтаксис

grep [options] template [file name...]
Или:

some_command | grep [options] template

Опции

Давайте рассмотрим самые основные опции утилиты, которые помогут более эффективно выполнять поиск текста в файлах grep:

  • -b - показывать номер блока перед строкой;
  • -c - подсчитать количество вхождений шаблона;
  • -h - не выводить имя файла в результатах поиска внутри файлов Linux;
  • -i - не учитывать регистр;
  • - l - отобразить только имена файлов, в которых найден шаблон;
  • -n - показывать номер строки в файле;
  • -s - не показывать сообщения об ошибках;
  • -v - инвертировать поиск, выдавать все строки кроме тех, что содержат шаблон;
  • -w - искать шаблон как слово, окружённое пробелами;
  • -e - использовать регулярные выражения при поиске;
  • -An - показать вхождение и n строк до него;
  • -Bn - показать вхождение и n строк после него;
  • -Cn - показать n строк до и после вхождения;

Поиск текста

grep User /etc/passwd
Output:

User:x:1000:1000:User,,,:/home/User:/bin/bash

Вывод нескорльких строк

Cтрока и 4 строки после неё

grep -A4 "EE" /var/log/xorg.0.log

Cтрока и 4 строки до неё

grep -B4 "EE" /var/log/xorg.0.log

По две строки с верху и снизу от вхождения

grep -C2 "EE" /var/log/xorg.0.log

Регулярные выражения

Регулярные выражения grep - очень мощный инструмент в разы расширяющий возможности поиска текста в файлах. Для активации этого режима используйте опцию -e. Рассмотрим несколько примеров:

Поиск вхождения в начале строки с помощью спецсимвола "^", например, выведем все сообщения за ноябрь:

grep "^Nov 10" messages.1
Nov 10 01:12:55 gs123 ntpd[2241]: time reset +0.177479 s
Nov 10 01:17:17 gs123 ntpd[2241]: synchronized to LOCAL(0), stratum 10

Поиск в конце строки - спецсимвол "$":

grep "terminating.$" messages
Jul 12 17:01:09 cloneme kernel: Kernel log daemon terminating.
Oct 28 06:29:54 cloneme kernel: Kernel log daemon terminating.

Все строки, которые содержат цифры:

grep "[0-9]" /var/log/Xorg.0.log

Рекурсивное использование grep

grep -rnw '/base/dir' -e 'word'

Поиск двух слов

Можно искать по содержимому файла не одно слово, а два сразу:

grep -w 'word1|word2' /path/to/file`

Инвертированный поиск

Команда grep Linux может быть использована для поиска строк в файле, которые не содержат указанное слово. Например, вывести только те строки, которые не содержат слово пар:

grep -v пар /path/to/file

Вывод имени файла

Вы можете указать grep выводить только имя файла, в котором было найдено заданное слово с помощью опции -l. Например, следующая команда выведет все имена файлов, при поиске по содержимому которых было обнаружено вхождение primary:

grep -l 'primary' *.c

Цветной вывод

Также вы можете заставить программу выделять другим цветом вхождения в выводе:

grep --color root /etc/passwd

Source