П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 177049 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 74230 раз(а).

Учебник HTML.
Просмотров 73367 раз(а).

Руководство по PHP5.
Просмотров 44238 раз(а).

Хостинг через призму DNS.
Просмотров 50991 раз(а).

Подборка текстов стандартных документов.
Просмотров 44422 раз(а).

Учебник PHP - Самоучитель
Просмотров 50662 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 51084 раз(а).

Внешние атаки...
Просмотров 41391 раз(а).

Учебник PHP.
Просмотров 36609 раз(а).

SSI в примерах.
Просмотров 27467 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь




Руководство пользователя для GNU Awk

4. Регулярные выражения

4.2 Управляющие последовательности

Некоторые символы не могут быть включены прямо в строковые константы ("foo") или константы regexp (/foo/). Вместо этого они представляются с помощью управляющих последовательностей, которые являются символьными последовательностями, начинающимися с обратного слеш (`"'). Одно из назначений управляющих последовательностей --- включать знак двойной кавычки в строковую константу. Поскольку просто двойная кавычка оканчивает цепочку, нужно употреблять `""' для представления символа двойной кавычки как члена цепочки.

Например:

$ awk 'BEGIN - print "He said ""hi!"" to her." ""'

a He said "hi!" to her.

Обратный слеш есть другой символ, который не может быть включен нормально; нужно писать `""', чтобы включить обратный слеш в цепочку или regexp. Так, цепочка, состоящая из двух символов `"' и `"', должна быть написана как """""".

Другая роль обратного слеш состоит в представлении непечатных символов, таких как tab или newline. Хотя ничего не препятствует вам вставлять большинство непечатных символов в строковую константу или константу regexp, они могут выглядеть странно.

Приведем здесь таблицу всех управляющих последовательностей, используемых в awk, и того, что они представляют. Если не указано другое, все эти управляющие последовательности применяются в строковых и в regexp константах.


"" обратный слеш, `"'.
"a  Символ "внимание", Control-g, ASCII code 7 (BEL).
"b Backspace, Control-h, ASCII code 8 (BS).
"f Formfeed, Control-l, ASCII code 12 (FF).
"n Newline, Control-j, ASCII code 10 (LF).
"r Carriage return, Control-m, ASCII code 13 (CR).
"t Horizontal tab, Control-i, ASCII code 9 (HT).
"v Vertical tab, Control-k, ASCII code 11 (VT).
"nnn Восьмеричное значение  nnn, 

где nnn есть одна-три цифры между `0' и `7'.

 Например, код для  ASCII ESC (escape) символа есть  `"033'.
 
"xhh... Шестнадцатеричное значение hh, 

где  hh есть шестнадцатеричные цифры

  (от `0' до  `9' и от  `A' до  `F' или от `a' до  `f').

Подобно аналогичным конструкциям в ANSI C, управляющие последовательности продолжаются, пока не достигается первый не-шестнадцатеричный символ. Однако, употребление больше чем двух шестнадцатеричных цифр приводит к неопределенному результату. ( `"x' управляющая последовательность недопустима в POSIX awk.)

"/ Слеш (необходим только в константах regexp). Используется, если вы хотите написать regexp-константу, содержащую слеш. Поскольку regexp ограничивается слешем, вы должны отметить слеш как часть образца, чтобы побудить awk продолжать обработку regexp.

"" Двойная кавычка (необходима только для строковых констант). В gawk имеются еще две символьные последовательности, которые начинаются с обратного слеш и имеют специальное значение в regexp. См. раздел 4.4 [Дополнительные операторы в Regexp, только для gawk], стр. 31.

Что произойдет, если вы поместите в строчной константе обратный слеш перед тем, что не является одним из символов, перечисленных выше? В POSIX awk это не определено намеренно. Имеются две возможности:

1. Вычеркнуть обратный слеш. Это делают оба Unix awk и gawk. Например, "a"qc" то же самое что "aqc".

2. Оставить обратный слеш в одиночестве. Некоторые другие реализации awk делают это. В такой реализации "a"qc" есть то же самое как напечатать "a""qc".

В regexp обратный слеш перед любым символом, который отсутствует в предыдущей таблице и не указан в разделе 4.4 [Дополнительные Regexp операторы, только для gawk], стр. 31, означает, что следующий символ должен быть воспринят буквально, даже если это есть орератор regexp.

 Например,

 /a"+b/ соответствует трем символам
 `a+b'.

Для полной переносимости не употребляйте обратный слеш перед символами, не перечисленными в таблице, приведенной выше.

Возникает еще один интересный вопрос. Предположим, вы используете восьмеричную или шестнадцатеричную управляющие последовательности для представления некоторого метасимвола в regexp (см. раздел 4.3 [Операторы в регулярных выражениях], стр. 26). Должен ли awk рассматривать этот символ буквально или как оператор в в regexp? Оказывается, что исторически такие символы рассматривались буквально (d.c.). Однако, стандарт POSIX указывает, что они должны рассматриваться как настоящие метасимволы, и gawk как раз это и делает. Вместе с тем в режиме эмуляции (см. раздел 14.1 [Параметры командной строки], стр. 161), gawk трактует символы, представленные восьмеричными или шестнадцатеричными управляющими последовательностями буквально, если они употреблены в константах regexp.

Так, /a"52b/ эквивалентно  /a"*b/.

Подведем итоги:

1. Управляющие последовательности из приведенной таблицы всегда обрабатываются в первую очередь в строковых константах и константах regexp. Это происходит на ранней стадии, когда awk читает вашу программу.

2. gawk обрабатывает константы regexp и динамические regexp (см.раздел 4.7 [Использование динамических regexp], стр. 35) для специальных операторов, перечисленных в разделе 4.4 [Дополнительные операторы Regexp, только в gawk], стр. 31.

3. Обратный слеш перед любым другим символом означает, что этот символ должен трактоваться буквально.

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru