Основы операционной системы 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`



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