Вызов программы grep
Вызов команды grep имеет следующий синтаксис:
grep [опции] [регулярное_выражение] [файл ...]
Команда ищет строки, задаваемые шаблоном в виде ограниченного регулярного выражения (используют подмножество допустимых алфавитно-цифровых и специальных символов), аналогичного используемым в ed, в указанных файлах или во входном потоке. Возможные опции приведены в табл. 21.
Таблица 21. Опции командной строки grep
Опция | Назначение |
-b | Перед каждой строкой выдавать номер блока, в котором она найдена. Это может пригодиться при определении номера блока по контексту |
-c | Выдавать только количество строк, соответствующих шаблону |
-i | Игнорировать разницу между прописными и строчными буквами |
-h | Предотвращает выдачу имени файла перед совпавшей строкой. Используется при многофайловом поиске. |
-l | Выдавать имена файлов, содержащих совпавшие строки, один раз, разделяя их переводом строки. Не повторяет имена файлов, если шаблон найден более одного раза. |
-n | Предваряет каждую строку ее порядковым номером (первая строка имеет номер 1) |
-s | Подавляет выдачу сообщений об ошибках, связанных с не существованием файлов или недоступностью для чтения |
-v | Выдает все строки, кроме тех, что содержат шаблон |
-e se | Ищет специальное выражение se (полное регулярное выражение, начинающееся с -) |
-f файл | Берет список полных регулярных выражений из файла |
Будьте внимательны при использовании символов $, *, [, ^, |, (, ) и \ в шаблоне, так как они также имеют значение для командного интерпретатора. Лучше заключать искомый шаблон в апострофы: '...'.
Статус выхода равен 0, если найдены совпадающие строки, 1 - если строки не найдены и 2 если имеется синтаксическая ошибка или недоступные файлы (даже если совпадения найдены).
Рассмотрим простые примеры:
[kravchuk@arturo 17:30:29 /]$ echo abc abc | grep '\([abc][abc]*\) \1' abc abc [kravchuk@arturo 17:31:13 /]$ echo abc abc | grep 'c a' abc abc [kravchuk@arturo 17:31:22 /]$ echo abc abc | grep '^c a' [kravchuk@arturo 17:31:26 /]$ cd $INFORMIXDIR/etc [kravchuk@arturo 17:31:45 /usr/inf.731/etc]$ grep -n $INFORMIXDIR ^C [kravchuk@arturo 17:32:03 /usr/inf.731/etc]$ grep -n tmp *.sh beta_evidence.sh:306: DUMPDIR=/tmp bldutil.sh:40:# remove tmp salvage_file bldutil.sh:55: RESFILE=/tmp/bldutil.$$ evidence.sh:302: DUMPDIR=/tmp logevent.sh:46:TMPFILE=${TMPDIR:-/tmp}/$PROG.`date +%y-%m-%d-%H%M-%S`