Next: 7.8 fmt - Форматировать
Up: 7. Программы преобразования и
Previous: 7.6 Программа od
Подраздел
Семейство программ grep позволяет вам находить в одном или в группе
файлов все строки, которые содержат цепочки символов удовлетворяющих
регулярному выражению или шаблону (подробнее смотрите раздел
4.5).
Само имя grep означает Global Regular Expresion Print - печать
регулярных выражений общего вида. Программы этого семейства можно
использовать как фильтры, т.е. извлекать подходящие под регулярное выражение
строки из стандартного ввода и посылать их на устройство стандартного
вывода.
Семейство сосотоит из тр©х членов, которые различаются по скорости работы,
а также по виду допустимых регулярных выражений.
- Программа grep производит поиск символьных цепочек
соответствующих представленному шаблону. Имеется три следующих варианта grep, выбираемых соответствующими параметрами:
- -G
- -basic-regexp
- Интерпретирует шаблон как базовое регулярное выражение. Этот режим
используется по умолчанию.
- -E
- -extended-regexp
- Интерпретирует шаблон как расширенное регулярное выражение.
- -F
- -fixed-strings
- Интерпретирует шаблон как список фиксированных символьных цепочек
раздел©нных символами
NL. Если любая цепочка из списка встречена в файле, то данная строка
выводится на устройство стандартного вывода.
- Программа egrep весьма подобна, но не идентична программе grep -E.
- Программа fgrep есть то же, что grep -F.
Все программы семейства grep воспринимают следующие параметры.
- -num
- Удовлетворяюшие строки будут напечатаны с num
предшествующими строками и num последующими. В этом случае grep
не будет печатать никакую строку более, чем один раз.
- -A num
- -after-context=num
- Вывести на устройство стандартного вывода num строк после найденной.
- -B num
- -before-context=num
- Вывести на устройство стандартного вывода num строк перед найденной
строкой.
- -C
- -context
- Эквивалентно значению -2.
- -V
- -version
- Вывести версию программы на устройство вывода диагностических сообщений.
- -b
- -byte-offset
- Вывести относительный адрес байта в файле для каждой выводимой строки.
- -c
- -count
- Запретить обычный вывод программы. Вместо него вывести число строк, которые
удовлетворяют шаблону. Если этот параметр используется совместно с
параметром -v (см. ниже), то будет выводится число строк не
удовлетворяющих шаблону.
- -e pattern
- -regexp=pattern
- Использовать pattern в качестве шаблона. Эта запись удобна, когда
шаблон начинается со знака - (минус).
- -f file
- -file=file
- Взять шаблон из файла с именем file.
Эта возможность удобна при поиске с использованием символов Кириллицы.
- -h
- -no-filename
- Запретить указание им©н файлов на выводе, если производится поиск по
шаблону в нескольких файлах. По умолчанию будет указаны имена файлов, в
которых найдены строки соответствующие шаблону.
- -i
- -ignore-case
- Игнорировать различие в регистрах как в шаблоне так и во вводных файлах.
Обратим внимание, что эта возможность отлично работает для Латиницы, но не
всегда для Кириллицы.
- -L
- -files-without-match
- Запретить обычный вывод.
Вместо этого напечатать имя каждого последовательно проверяемого файла,
в котором не найдено строк соответствующих шаблону. Операция будет
остановлена как только будет найдена первая строка соответствующая шаблону
или будет исчерпан список файлов.
- -l
- -files-with-matches
- Запретить обычный вывод.
Вместо него выдать имя каждого файла, в котором имются строки
удовлетворяющие шаблону.
- -n
- -line-number
- Выдать номера строк в файле вместе с самими строками удовлетворяющими шаблону.
- -q
- -quiet
- Выполняться без вывода. Поиск строк соответствующих шаблону останавливается
на первой же найденной строке. Если строка найдена, устанавливается код
завершения 0, и 1 - в противном случае.
- -s
- -silent
- Запретить сообщения об ошибках если встртились несуществуюшие или нечитаемые
файлы (например, нет доступа по чтению).
- -v
- -revert-match
- Инвертировать смысл соответствия шаблону, т.е. вывести строки, которые не
соответствуют шаблону.
- -w
- -word-regexp
- Вывести лишь те соответствия шаблону, которые совпадают с границами слова.
Слово может содержать букву, цифру и подч©ркивание.
- -x
- -line-regexp
- Вывести лишь те соответствия, которые представляют собой целую строку.
- -y
- удал©нный синоним для параметра -i.
Программа grep понимает две различные версии синтаксиса регулярных
выражений: BASIC - основной и EXTENDED - расширенный.
В GNU grep нет различий при использовании обоих видов синтаксиса.
Регулярные выражения рассматриваются в разделе 4.5.
Для начала полезно получить версию программы grep
SPMquot
grep -V"
В ответ печатается:
grep (GNU grep) 2.1
Copyright (C) 1988, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
Найти в файле Grep.tex все строки, которые содержат
последовательность -i
grep -e -i Grep.tex
В ответ печатается
\item [-i]
\item [-y] удал\"енный синоним для параметра {\bf -i}.
Найти в файле все строки которые содержат в первой слева позиции обратный
слеш
SPMquot
grep ^
Grep.tex"
В ответ будут напечатаны все строки, которые содержат знак обратный слеш в
первой слева позиции.
А команда
SPMquot
grep -v ^
Grep.tex"
выведет на экран все строки, которые не содержат знака обратный слеш
в═первой слева позиции.
Ту же команду можно выполнить в другом варианте
SPMquot
cat > Pattern"
SPMquot
^
"
SPMquot
Ctrl/D"
SPMquot
grep -vf Pattern Grep.tex"
В последнем примере шаблон для поиска помещ©н в файл с именем Pattern. При этом вы могли обратить внимание, что использовано разное
количество обратных слешей. Дело связано с тем, что обратные слеши сначала
были обработаны оболочкой bash, а затем программой grep.
Next: 7.8 fmt - Форматировать
Up: 7. Программы преобразования и
Previous: 7.6 Программа od
Andrei Chevel
Andrei.Chevel@pnpi.spb.ru