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

     

Запуск программ на выполнение


Есть два способа запустить на выполнение awk-программу, состоящую из операторов вида шаблон {действие}:

1. Если программа короткая (одна-две строки), зачастую проще всего указать программу в качестве первого аргумента командной строки:

awk 'программа' [имя_файла...]

где программа - это awk-программа, которую надо выполнить, а имя-файла... - необязательный аргумент, определяющий входной файл (файлы). Отметим, что одинарные кавычки, в которые заключен текст программы, нужны для того, чтобы shell воспринял всю эту цепочку (программу) как первый аргумент команды awk. Например, чтобы выполнить над файлом file1 awk-программу

/x/ { print }

надо передать shell'у команду

awk '/x/ { print }' file1

Если входной файл не специфицирован, awk ожидает исходные данные со стандартного ввода, stdin. Кроме того, можно специфицировать, что stdin будет одним из входных файлов; для этого в командной строке указывается символ -. Командная строка

awk 'программа' файл1 -

вызывает сначала обработку файла1, а затем - стандартного ввода.

2. Если, напротив, программа длинная, или если Вы хотите сохранить ее для того, чтобы использовать впоследствии, удобно поместить программу в отдельный файл, и указать awk'у имя файла, из которого ее надо брать. Это можно сделать, использовав в командной строке опцию -f:

awk -f имя_программы [имя_файла ...]

Здесь имя_программы указывает файл, содержащий awk-программу, а имя_файла ... - необязательный аргумент, определяющий входной файл (файлы), среди которых, как сказано выше, может быть стандартный ввод.

Проиллюстрируем альтернативные способы запуска на обработку awk-программ. Выполнение shell'ом командной строки

awk 'BEGIN { print "hello, world"; exit }'

приводит к выдаче на стандартный вывод

hello, world

Эту же awk-программу можно выполнить, поместив ее текст

BEGIN { print "hello, world"; exit }

в файл awkprog, а затем набрав в shell'е команду

awk -f awkprog

Результат будет тот же.



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