Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционная система UNIX.doc
Скачиваний:
94
Добавлен:
01.05.2014
Размер:
1.67 Mб
Скачать

10.7. Шаблоны

В выражении шаблон-действие, шаблон служит для выбора записей, для которых выполняется соответствующее действие.

10.7.1. Шаблоны begin и end

BEGIN используется для получения управления перед считыванием первой вводной строки, так что любое действие для шаблона BEGIN выполняется один раз до того, как команда awk начинает считывать первую запись. END используется для получения управления после считывания последней вводной строки.

Следующая awk-программа использует BEGIN для установки в качестве разделителя символа табуляции (\t) и создания заголовков в выводном файле. Поле-разделитель хранится во встроенной переменной FS. Хотя FS может быть восстановлено в любом месте, благоразумнее поместить в секции BEGIN, до того как вводной файл начнет считываться. Второй printf в программе выполняется для каждой вводной строки и формирует выводной файл в виде таблицы, где вся информация располагается по колонкам с заголовками. END печатает результат. (Обратите внимание, что длинная строка может быть продолжена на другой строке после запятой).

BEGIN { FS = "\t"

printf "%10s %6s %5s %s\n",

"COUNTRY", "AREA", "POP", "CONTINENT" }

printf "%10s %6s %5s %s\n", $1, $2, $3, $4

area = area + $2; pop = pop + $3}

END {printf "\n%10s %6d %5d\n", "TOTAL", area, pop }

Если в качестве вводного взять файл countries, то получим следующий результат:

COUNTRY AREA POP CONTINENT

USSR 8650 262 Asia

Canada 3852 24 North America

China 3692 866 Asia

USA 3615 219 North America

Brazil 3286 116 South America

Australia 2968 14 Australia

India 1269 637 Asia

Argentina 1072 26 South America

Sudan 968 19 Africa

Algeria 920 18 Africa

TOTAL 30292 2201

10.8. Выражения отношения

В качестве шаблона может использоваться любое выражение, вызывающее сравнение между строками символов или цифр. awk имеет 6 операторов сравнения и два регулярных выражения ~ и !~. В табл. 21 перечислены все операторы и их значение.

Таблица 21 Значения операторов

Оператор

Значение

<

Меньше чем

<=

Меньше или равно

==

Равно

!=

Не равно

>=

Больше или равно

>

Больше чем

~

Входит

!~

Не входит

При сравнении, если оба операнда являются цифровыми, то проводится цифровое сравнение; в противном случае - строчное. Например, шаблон:

$3 > 100

выбирает строки в которых третье поле больше 100, а программа:

$1 >= "S"

выбирает строки, которые начинаются с буквы S по букву Z:

USSR 8650 262 Asia

USA 3615 219 North America

SUDAN 986 19 Africa

При отсутствии любой другой информации awk трактует поля как строки, так что программа:

$1 == $4

сравнивает 1-е и 4-е поля как строки символов и для файла countries получим следующий результат:

Australia 2968 14 Australia

Соседние файлы в предмете Операционные системы