Составной шаблон комбирирует простые шаблоны с логическими операторами "||" (или), "&&" (и), !(отрицание). Например, нужно напечатать все страны в "Asia" с населением более 500 млн. Следующая программа выполняет выбор всех строк, у которых 4-е поле "Asia" и третье поле превышает 500:
$4 == "Asia" && $3 > 500
Программа:
$4 == "Asia" || $4 == "Africa"
выбирает строки с названиями "Asia" или "Africa" в 4-м поле. Эти же действия можно выполнить с помощью регулярного выражения и альтернативного оператора "|":
$4 ~ /^(Asia|Africa)$/
Оператор отрицания "!" имеет более высокий проиритет, чем "&&" и "||". Операторы "&&" и "||" вычисляются слева направо. Вычисление останавливается как только истина или ложь будут достигнуты.
Область шаблона состоит из двух шаблонов, разделенных запятой:
pat1, pat2 {...}
В этом случае действие выполняется для каждой строки, расположенной между pat1 и pat2 (включительно). Например, шаблон:
/Canada/, /Brazil/
ищет строки со словом "Canada" до строки со словом "Brazil"
Canada 3852 24 North America China 3692 866 Asia USA 3615 219 North America Brazil 3286 116 South America
Также, если FNR - число текущих записей в текущем вводном файле, FILENAME - имя текущего вводного файла, то программа:
FNR == 1, FNR == 5 {print FILENAME, $0}
печатает первые 5 записей каждого вводного файла с именем FILENAME.
Назад | Содержание | Вперед