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
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