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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





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

2. Начальные сведения об awk

2.6 awk операторы над строками

Чаще всего каждая строка в awk-программе есть отдельный оператор или отдельное правило, подобно следующему:

awk '/12/ - print $0 ""

/21/ - print $0 ""' BBS-list inventory-shipped

Однако,  gawk игнорирует переходы к новой строке после каждого из следующих
слов
, - ? : ---- &&

и делает newline в каждой точке, рассматриваемой как конец оператора. (Расщепление строк после `?' и `:' есть простейшее расширение gawk. Упомянутые здесь `?' и `:' есть трехоперандные условные выражения, описанные в разделе 7.12 [Условные выражения], стр. 92.) Если вы хотите расщепить единый оператор на две строки в точке, где переход к новой строке означал бы его конец, нужно продолжить его, закончив первую строку символом обратного слеш, `"'. Обратный слеш должен быть последним символом строки, чтобы быть распознанным как символ продолжения. Это разрешается абсолютно везде в операторе, даже внутри цепочки или регулярного выражения.

Например:

awk '/This regular expression is too long, so continue it"

on the next line/ - print $1 ""'

Мы, вообще говоря, не употребляем продолжения обратным слешем в примерах программ в этой книге. Поскольку в gawk нет ограничений на длину строки, это необязательно; но это облегчает чтение программы. По этой причине и для ясности мы ограничиваемся обычно короткими операторами в примерах программ, приведенных в книге. Продолжение через обратный слеш наиболее полезно, когда ваша awk-программа находится в отдельном исходном файле, а не печатается в командной строке. Надо также отметить, что многие реализации awk чувствительны к местам продолжения с помощью обратного слеш. Например, они могут не разрешать разрезать таким образом строковые константы. Поэтому, в целях максимальной переносимости ваших awk-программ, лучше не разрезать регулярные выражения или цепочки.

Внимание: продолжение с обратным слеш не работает, как описано выше, с оболочкой Си. Продолжение с обратным слеш работает в awk-программах в файлах и также в коротких программах при условии использования POSIX-подчиненной оболочки, такой как Bourne shell или Bash, GNU Bourne-Again shell. Но Си-оболочка (csh) ведет себя не так! Там вы должны взять два обратных слеш подряд и переход к новой строке. Заметим также, что при использовании Си-оболочки каждая newline в вашей awk-программе должна заканчиваться обратным слешем.

 Например:

% awk 'BEGIN - " ? print "" ? "hello, world" "
? ""'
a hello, world

Здесь `%' and `?' есть первичная и вторичная подсказки Си-оболочки, аналогичные стандартным `$' и `?'.

awk представляет собой строко-ориентированный язык. Каждое действие правила должно начинаться на той же строке, что и образец. Чтобы иметь образец и действие в разных строках, нужно использовать продолжение обратным слешем, другого пути для этого нет.

Заметим, что продолжение обратным слешем и комментарии нельзя смешивать. Каждый `#' для awk есть начало комментария, он игнорирует остаток строки.

Например:

$ gawk 'BEGIN - print "dont panic" # a friendly " ? BEGIN rule ? ""'

error gawk: cmd. line:2: BEGIN rule error gawk: cmd. line:2: ^ parse error

Здесь кажется, что обратный слеш продолжает комментарий на следующую строку. Однако, комбинация обратный слеш-новая строка не замечается, так как относится к комментарию. Поэтому `BEGIN' отмечается как синтаксическая ошибка.

Когда awk-операторы в пределах одного правила коротки, вы можете разместить их более одного в строке. Для этого операторы разделяются точками с запятой `;'. Это также приложимо к самим правилам. Так, предыдущая программа может быть написана в форме:


/12/ - print $0 "" ; /21/ - print $0 ""

ЗАМЕЧАНИЕ: требование разделять правила в одной и той же строке двоеточиями отсутствовало в оригинальном языке awk; оно было добавлено для совместимости с трактовкой операторов внутри одного действия.

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



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





Copyright © 2005-2016 Project.Net.Ru