Интерпретатор awk читает входные файлы построчно. К каждой строке применяются образцы всех правил. Если строке соответствуют несколько образцов, соответствующие действия выполняются в порядке, в котором они фигурируют в программе awk. Если входной строке не соответствует ни один образец, никакие действия не выполняются. После обработки всех правил (возможно никаких), соответствующих строке, интерпретатор читает следующую строку (однако, см. раздел 9.7 [Следующий оператор], стр. 111, и также раздел 9.8 [Оператор nextfile], стр. 112). Это продолжается до достижения конца файла.
содержит два правила. Образец первого правила есть цепочка `12', а действие `print $0'. Второе правило имеет образец `21' и действием тоже `print $0'. Каждое правило заключено в свою собственную пару скобок.
Эта программа печатает каждую строку, содержащую цепочку `12' или цепочку `21'. Если строка содержит обе цепочки, она печатается дважды, один раз по каждому правилу. Вот что будет, если мы выполним эту программу на наих двух файлах с данными, `BBS-list' и `inventory-shipped':
$ awk '/12/ - print $0 "" ? /21/ - print $0 ""'
BBS-list inventory-shipped
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 core 555-2912 1200/300 C
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
a sabafoo 555-2127 1200/300 C
a Jan 21 36 64 620
a Apr 21 70 74 514
Заметьте, что строка из `BBS-list', начинающаяся с `sabafoo', печатается дважды, один раз для каждого правила.