Вывод в различные файлы
shell позволяет переназначать стандартный вывод в файл. awk
также позволяет направить вывод во многие различные файлы, причем это можно сделать внутри awk-программы. Вернемся к входному файлу countries. Допустим, требуется вывести всю информацию о странах из Азии в файл, называемый ASIA, всю информацию о странах из Африки в файл AFRICA, и т.д. Это можно сделать при помощи следующей awk-программы:
{ if ($4 == "Asia") print > "ASIA" if ($4 == "Europe") print > "EUROPE" if ($4 == "North") print > "NORTH_AMERICA" if ($4 == "South") print > "SOUTH_AMERICA" if ($4 == "Australia") print > "AUSTRALIA" if ($4 == "Africa") print > "AFRICA" }
Операторы, управляющие последовательностью вычислений, обсуждаются позднее.
В общем случае можно направить вывод в файл, указав его имя после оператора print или printf. В операторе вида
printf > "имя_файла"
имя_файла задает файл, в который направляются данные. У оператора могут быть указаны произвольные допустимые аргументы.
Подчеркнем, что имя файла заключается в кавычки. При отсутствии кавычек имена файлов трактуются как переменные, которые могут оказаться неинициализированными; в таком случае весь вывод направляется в stdout, если он не переназначен в командной строке.
Если вместо > указать >>, вывод будет добавлен в конец файла, а не заменит его содержимое. Отметим, что существует ограничение на максимальное число файлов, в которые можно таким образом направить вывод. Сейчас оно равно десяти.