Использование grep¶
В первом примере мы будем искать пользователя User в файле паролей Linux. Чтобы выполнить поиск текста grep в файле /etc/passwd введите следующую команду:
В результате вы получите что-то вроде этого, если, конечно, существует такой пользователь:
User:x:1000:1000:User. /home/User:/bin/bash
А теперь не будем учитывать регистр во время поиска. Тогда комбинации ABC, abc и Abc с точки зрения программы будут одинаковы:
Вывести несколько строк¶
Например, мы хотим выбрать все ошибки из лог-файла, но знаем, что в следующей строчке после ошибки может содержаться полезная информация, тогда с помощью grep отобразим несколько строк. Ошибки будем искать в Xorg.log по шаблону «EE»:
$ grep -A4 "EE" /var/log/xorg.0.log
Выведет строку с вхождением и 4 строчки после неё:
$ grep -B4 "EE" /var/log/xorg.0.log
Выведет целевую строку и 4 строчки до неё:
$ grep -C2 "EE" /var/log/xorg.0.log
Выведет по две строки с верху и снизу от вхождения.
Регулярные выражения в grep¶
Регулярные выражения 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 -r "mydomain.com" /etc/apache2/
Кавычки позволяют искать полное соотвествие с заданным шаблоном. Пример:
$ grep -r "zendsite" /etc/apache2/ /etc/apache2/vhosts.d/zendsite_vhost.conf: ServerName zendsite.localhost /etc/apache2/vhosts.d/zendsite_vhost.conf: DocumentRoot /var/www/localhost/htdocs/zendsite /etc/apache2/vhosts.d/zendsite_vhost.conf:
Здесь перед найденной строкой указано имя файла, в котором она была найдена. Добавление параметра -n добавляет к выводу номер строки в файле, где найден заданный шаблон поиска. Вывод имени файла легко отключить с помощью опции -h:
$ grep -h -r "zendsite" /etc/apache2/ ServerName zendsite.localhost DocumentRoot /var/www/localhost/htdocs/zendsite
Это будет искать только те файлы, у которых есть.c или.h расширения:
$ grep --include=\*.c,h> -rnw '/path/to/somewhere/' -e "pattern"
Это исключает поиск всех файлов, заканчивающихся расширением.o:
$ grep --exclude=*.o -rnw '/path/to/somewhere/' -e "pattern"
Для каталогов можно исключить конкретный каталог через параметр –exclude-dir. Например, это исключает dir1/, dir2/dir2 и все из них, соответствующие * .dst/:
$ grep --exclude-dir=dir1,dir2,*.dst> -rnw '/path/to/somewhere/' -e "pattern"
Поиск слов в grep¶
Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить утилиту искать по содержимому файлов в Linux только те строки, которые выключают искомые слова с помощью опции -w:
Поиск двух слов¶
Можно искать по содержимому файла не одно слово, а два сразу:
$ egrep -w 'word1|word2' /path/to/file
Количество вхождений строки¶
Утилита grep может сообщить, сколько раз определённая строка была найдена в каждом файле. Для этого используется опция -c (счетчик):
Инвертированный поиск в grep¶
Команда grep Linux может быть использована для поиска строк в файле, которые не содержат указанное слово. Например, вывести только те строки, которые не содержат слово пар:
Вывод имени файла¶
Вы можете указать grep выводить только имя файла, в котором было найдено заданное слово с помощью опции -l. Например, следующая команда выведет все имена файлов, при поиске по содержимому которых было обнаружено вхождение primary:
Цветной вывод в grep¶
Также вы можете заставить программу выделять другим цветом вхождения в выводе:
$ grep --color root /etc/passwd
© Copyright 2020 Revision 10618177 .
Versions latest Downloads pdf html epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.