Руководство пользователя для GNU Awk
4. Регулярные выражения
4.4 Дополнительные Regexp-Операторы, только для gawk
Программное обеспечение GNU при обработке регулярных выражений допускает некоторое количество дополнительных операторов. Эти операторы описаны в настоящем разделе. Они специфичны для gawk и не могут использоваться в других реализациях awk.
Большинство дополнительных операторов предназначены для установки соответствий между словами. В нашем случае слово есть последовательность из одной или более букв, цифр или символов подчеркивания (`.').
"w оператор соответствует любому символу из состава слова, т.е. букве, цифре или подчеркиванию. Его можно мыслить как сокращение для [[:alnum:].].
"W означает любой символ кроме образующих слово. Он может мыслиться как сокращение для [^[:alnum:].].
"! оператор означает пустую цепочку в начале слова. Например, /"!away/ соответствует `away', но не `stowaway'.
"? оператор соответствует пустой цепочке в конце слова. Например, /stow"?/ соответствует `stow', но не `stowaway'.
оператор соответствует пустой цепочке или в начале или в конце слова (на границе слова). Например, `"yballs?"y' соответствует или `ball' или `balls' как отдельным словам.
"B оператор отвечает пустой цепочке в пределах слова. Другими словами, `"B' соответствует пустой цепочке, которая находится между двумя входящими в состав слова символами. Например, /"Brat"B/ соответствует `crate', но не соответствует `dirty rat'. `"B' есть существенная противоположность `"y'.
Имеются еще два оператора, которые действуют на буферах. В Emacs буфер, естественно, есть буфер Emacs. Для других программ подпрограммы из библиотеки подпрограмм для regexp, которые использует gawk, рассматривают всю цепочку для соответствия как буфер.
Для awk, поскольку `^' и `$' всегда действуют в терминах начала и конца цепочек, эти операторы не прибавляют никаких новых возможностей. Они добавлены только для совместимости с другими программами обеспечения GNU.
"` Этот оператор соответствует пустой строке в начале буфера.
"' Этот оператор соответствует пустой строке в конце буфера.
В других программных обеспечениях GNU оператор границ слов есть `"b'. Однако, это противоречит с определением в языке awk `"b' как возврата на одну позицию (backspace), поэтому в gawk используется другая буква.
Альтернативным методом могло бы быть требование двух обратных слешей в операторах GNU, но это было сочтено слишком запутанным, и текущий способ употребления `"y' вместо `"b' в GNU кажется меньшим из двух зол.
Различные параметры командной строки (см. раздел 14.1 [Параметры командной строки], стр. 161) управляют интерпретацией gawk символов в regexp. По умолчанию gawk обеспечивает все средства операторов в POSIX regexp и GNU regexp, описанные выше. Однако, интервальные выражения не обрабатываются.
Далее перечисляются возможные параметры и их действие:
--posix
Обрабатываются только POSIX regexp, операторы GNU не рассматриваются (например, `"w' соответствует литералу `w'). Интервальные выражения допускаются.
--traditional
Соответствие традиционным Unix awk regexp. Операторы GNU не должны быть специальными, интервальные выражения не используются, не допускаются символьные классы POSIX ([[:alnum:]] и т.д.). Символы в восьмеричных и шестнадцатеричных управляющих последовательностях рассматриваются буквально, даже если последовательности представляют метасимволы regexp.
--re-interval
Допускаются интервальные выражения в regexp, даже если `--traditional' был ранее указан.
Назад | Вперед
Содержание (общее) | Содержание раздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|