Руководство пользователя для GNU Awk
4. Регулярные выражения
4.1 Как использовать регулярные выражения
Регулярное выражение может использоваться как образец, если его заключить в слеши:
$ awk '/foo/ - print $2 ""'
BBS-list
a 555-1234
a 555-6699
a 555-6480
a 555-2127
Регулярные выражения могут также использоваться в выражениях соответствия. Эти выражения позволяют вам указывать цепочки, которым они соответствуют; Это не обязательно целая текущая входная запись. Два оператора, `~' и `!~', производят сравнение регулярных выражений. Выражения с этими операциями могут использоваться в качестве образцов или в составе операторов if, while, for и do.
exp ~ /regexp/
имеет значение true, если выражение exp (рассматриваемое как цепочка) соответствует regexp.
Следующий пример соответствует (то есть выбирает) все входные записи, имеющие букву верхнего регистра `J' в любой позиции в первом поле:
$ awk '$1 ~ /J/' inventory-shipped
a Jan 13 25 15 115
a Jun 31 42 75 492
a Jul 24 34 67 436
a Jan 21 36 64 620
То же самое делает программа:
awk '- if ($1 ~ /J/) print ""' inventory-shipped
Выражение exp !~ /regexp/ имеет значение true, если выражение exp (рассматриваемое как цепочка символов) не соответствует regexp. Следующий пример отбирает все входные записи, в которых первое поле не содержит букву верхнего регистра `J':
$ awk '$1 !~ /J/' inventory-shipped
a Feb 15 32 24 226
a Mar 15 24 34 228
a Apr 31 52 63 420
a May 16 34 29 208...
Когда regexp заключено в слеши, подобно /foo/, мы называем его константой regexp, подобно численной константе 5.27, а "foo" есть строковая константа.
Назад | Вперед
Содержание (общее) | Содержание раздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|