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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





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

8. Образцы и действия

8.1 Элементы образцов

8.1.3 Выражения как образцы

Каждое выражение awk может быть образцом awk. Тогда образец соответствует, если значение выражения не ноль (в случае числа) или не пусто (в случае цепочки). Выражение пере вычисляется каждый раз, когда правило проверяется для новой входной записи. Если в выражении используются поля, такие как $1, значение зависит непосредственно от текста новой входной записи; в противном случае оно зависит только от того, что произошло до сих пор при выполнении awk-программы, но все еще может быть полезным.

Самым обычным типом выражений, используемых в качестве образца, служат выражения сравнения, содержащие операторы сравнения, описанные в разделе 7.10 [Типы переменных и выражения сравнения], стр. 88.

Соответствия и несоответствия с regexp также представляют обычно употребляемые выражения. Левый операнд в операторах `~' и `!~' есть цепочка. Правый операнд есть или постоянное регулярное выражение, заключенное в слеши (/regexp/) или любое выражение, строковое значения которого используется как динамическое регулярное выражение (см. раздел 4.7 [Использование динамических Regexps], стр. 35).

В следующем примере печатается второе поле каждой входной записи , у которой первое поле есть в точности `foo'.


$ awk '$1 == "foo" - print $2 ""' BBS-list

(Здесь нет выхода, поскольку в BBS нет экранов с именем "foo".) В отличие от соответствия следующего регулярного м выражения, которое выбирает всякую запись с первым полем, содержащим `foo':

$ awk '$1 ~ /foo/ - print $2 ""' BBS-list

a 555-1234 a 555-6699 a 555-6480 a 555-2127

Булевские выражения также обычно используются в качестве образцов. Соответствует ли образец входной записи зависит от того, соответствуют ли друг другу их подвыражения. Например, такая команда печатает все записи из `BBS-list', которые содержат вместе `2400' и `foo':

$ awk '/2400/ && /foo/' BBS-list
a fooey 555-1234 2400/1200/300 B

А следующая команда печатает все записи из `BBS-list', которые содержат или `2400' или `foo', или и то и другое:


$ awk '/2400/ ---- /foo/' BBS-list
a alpo-net 555-3412 2400/1200/300 A
a bites 555-1675 2400/1200/300 A
a fooey 555-1234 2400/1200/300 B
a foot 555-6699 1200/300 B
a macfoo 555-6480 1200/300 A
a sdace 555-3430 2400/1200/300 A
a sabafoo 555-2127 1200/300 C

Следующая команда печатает все записи из  `BBS-list', 
которые не содержат цепочки `foo':

$ awk '! /foo/' BBS-list
a aardvark 555-5553 1200/300 B
a alpo-net 555-3412 2400/1200/300 A
a barfly 555-7685 1200/300 A
a bites 555-1675 2400/1200/300 A
a camelot 555-0542 300 C
a core 555-2912 1200/300 C
a sdace 555-3430 2400/1200/300 A

Подвыражения булевского оператора в образце могут быть постоянными регулярными выражениями, сравнениями или любыми другими awk-выражениями. Образцы для диапазонов не являются выражениями и не могут появиться внутри булевских образцов. Точно также специальные образцы BEGIN и END, которые никогда не сопоставляются ни одной входной записи, не есть выражения и не могут появиться внутри булевских выражений. Константа regexp как образец также представляет специальный случай выражения-образца. /foo/ как выражение имеет значение один, если `foo' появится в текущей входной записи; так, как образец, /foo/ соответствует любой записи, содержащей `foo'.

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



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





Copyright © 2005-2016 Project.Net.Ru