Глава 3. Регулярные выражения
47
Используемые команды
Мы.представляем.семейство.команд.
grep
.для.демонстрации.основных.шаблонов.
регулярных.выражений.
grep
Команда.
grep
.выполняет.поиск.по.содержимому.файлов.с.помощью.заданного.
шаблона.и.выводит.любую.строку,.которая.ему.соответствует..Чтобы.использо-
вать.команду.
grep
,.вам.нужно.указать.шаблон.и.одно.или.несколько.имен.файлов.
(имена.файлов.могут.быть.переданы.через.канал.передачи.данных).
Общие параметры команды
-c
.—.вывести.количество.строк,.соответствующих.шаблону;
-E
.—.включить.расширенное.регулярное.выражение;
-f
.—.читать.шаблон.поиска,.находящийся.в.предоставленном.файле..Файл.
может.содержать.несколько.шаблонов,.причем.каждая.строка.включает.в.себя.
один.шаблон;
-i
.—.игнорировать.регистр.символов;
-l
.—.вывести.только.имя.файла.и.путь,.по.которому.был.найден.шаблон;
-n
.—.вывести.номер.строки.файла,.в.которой.был.найден.шаблон;
-P
.—.включить.механизм.регулярных.выражений.Perl;
-R
,.
-r
.—.выполнить.рекурсивный.поиск.подкаталогов.
Пример команды
В.общем.случае.
grep
.используется.следующим.образом:.
grep
.
параметры
.
шаблон
.
имена_файлов
.
Для.поиска.в.каталоге.
/home
.и.во.всех.его.подкаталогах.файлов,.содержащих.слово.
password
.независимо.от.регистра,.выполните.команду:
grep -R -i 'password' /home
grep и egrep
Команда.
grep
.поддерживает.расширенный.синтаксис.для.шаблонов.регулярных.
выражений.(мы.обсудим.их.далее)..Есть.три.способа.сообщить.команде.
grep
,.что.
48
Часть I • Основы
вам.нужно.специальное.значение.для.определенных.символов:.1).добавить.перед.
этими.символами.обратный.слеш.(
\
);.2).сообщить.
grep
,.что.вам.нужен.специ-
альный.синтаксис.(без.обратного.слеша),.используя.при.вызове.
grep
.параметр.
-E
;.
3).добавить.команду.
egrep
,.которая.представляет.собой.скрипт,.вызывающий.
grep
.
как.
grep
.
-E
.
Единственные.символы,.на.которые.влияет.расширенный.синтаксис,.—.это.
+
,.
{
,.
|
,.
(
.и.
)
..В.следующих.примерах.мы.используем.взаимозаменяемость.
grep
.и.
egrep
.—.
это.один.и.тот.же.двоичный.код..В.зависимости.от.того,.какие.специальные.симво-
лы.нам.нужны,.мы.выбираем.тот.пример,.который.кажется.наиболее.подходящим..
Особую.мощь.команде.
grep
.придают.специальные.символы,.или.метасимволы..
Поговорим.о.наиболее.популярных.из.них.
Метасимволы
регулярного выражения
Регулярные.выражения.—.это.шаблоны,.созданные.с.использованием.последова-
тельности.символов.и.метасимволов..Такие.метасимволы,.как.знак.вопроса.(
?
).
и.звездочка.(
*
),.помимо.непосредственного.значения,.в.регулярном.выражении.
имеют.специальное.значение.
Метасимвол «.»
В.регулярном.выражении.точка.(
.
).представляет.собой.один.символ.подстановки..
Она.будет.соответствовать.любому.символу,.кроме.символа.новой.строки..Как.вид-
но.из.следующего.примера,.если.мы.попытаемся.найти.соответствие.шаблону.
T.o
,.
будет.возвращена.первая.строка.файла.
frost.txt
,.поскольку.в.ней.содержится.
слово.
Two
:
$ grep 'T.o' frost.txt
1
Two
roads diverged in a yellow wood,
Обратите.внимание,.что.строка.5.не.возвращается,.хотя.в.ней.содержится.слово.
To
..
Данный.шаблон.позволяет.любому.символу.появляться.между.символами.
T
.и.
o
..Как.
указывалось.ранее,.между.символами.
T
.и.
o
.должен.находиться.еще.один.символ.
(это.обозначается.символом.подстановки.в.виде.точки)..Шаблоны.регулярных.
выражений.также.
чувствительны
.к.регистру,.поэтому.строка.3.файла.не.возвра-
щается,.хотя.она.содержит.слово.
too
..Если.вы.хотите.трактовать.этот.метасимвол.
Do'stlaringiz bilan baham: |