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

       

Вывод в различные файлы


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, если он не переназначен в командной строке.

Если вместо > указать >>, вывод будет добавлен в конец файла, а не заменит его содержимое. Отметим, что существует ограничение на максимальное число файлов, в которые можно таким образом направить вывод. Сейчас оно равно десяти.



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