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