Операционная система UNIX. Руководство программиста

     

BEGIN и END


Ключевое слово BEGIN является специальным шаблоном, сопоставляющимся с началом исходных данных перед тем, как считывается первая запись. Ключевое слово END - специальный шаблон, сопоставляющийся с концом исходных данных после того, как обработана последняя строка. Таким образом, BEGIN и END дают возможность перехватить управление до и после обработки исходных данных, чтобы выполнить инициализационные и заключительные действия.

В следующем примере шаблон BEGIN используется для того, чтобы вывести заголовки столбцов. Программа

BEGIN {print "Country","Area","Population","Continent"} { print }

порождает такой текст:

Country Area Population Continent Russia 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

Формат, в котором выводятся заголовки, не очень хорош; в случаях, когда важно качество внешнего представления, обычно используется printf - он больше подходит для такой задачи.

Напомним также, что секцию BEGIN удобно использовать для переустановки специальных переменных, в частности FS и RS. Пример:

BEGIN { FS= "\t" printf "Country\t\t Area\tPopulation\tContinent\n\n"} { printf "%-10s\t%6d\t%6d\t\t% -14s\n", $1, $2, $3, $4 } END { print "The number of records is", NR }

В этой программе FS устанавливается в секции BEGIN равным табуляции, в результате чего все записи в файле countries содержат ровно четыре поля. Рекомендуется указывать BEGIN первым в последовательности шаблонов, а END - последним.



Содержание раздела