Основы операционной системы UNIX



         

Вызов программы 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`




Содержание  Назад  Вперед