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

Вывод в каналы


Вывод можно направить не только в обычный файл, но и в канал. Пример:

{ if ($2 == "XX") print | "mailx mary" }

где mary - имя, под которым пользователь входит в систему. Любая запись со вторым полем, равным XX, отправляется пользователю mary в виде почты. awk ждет, пока не выполнится программа целиком, а затем выполняется команда, соединенная с ней каналом [в данном случае - команда mailx(1)]. Программа

{ print $1 | "sort" }

выделяет из каждой входной записи первое поле, сортирует эти поля и затем распечатывает их.

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

{ print ... | "cat -v > /dev/tty" }

Во всех операторах вывода, включающих переназначение вывода, файлы или каналы идентифицируются по именам, однако создаются или открываются они только один раз за время выполнения программы.



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