Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционная система UNIX.doc
Скачиваний:
94
Добавлен:
01.05.2014
Размер:
1.67 Mб
Скачать

10.1.3. Печать

Если шаблон в выражении шаблон-действие опущен, действие выполняется для всех вводных строк. Простейшим действием является печать каждой строки, вы можете выполнить это с помощью программы awk, состоящей из одного выражения print:

{print}

так что командная строка:

awk '{print}' countries

печатает каждую строку файла countries, направляя вывод в стандартный файл вывода. Действие print может также использоваться для распечатки частей записи. Например:

{print $1, $3}

печатает первое и третье поля каждой записи. Элементы, разделенные в выражении print запятой, разделяются при печати разделителем, которым по умолчанию является один пробел. Каждая напечатанная строка завершается разделителем, которым по умолчанию является символ новой строки.

Примечание. В этом разделе будут показаны текст программы awk, без командной строки. Каждую программу можно запустить, либо заключив ее в кавычки как первый аргумент команды awk, либо поместив ее в файл и вызвать awk с флагом -f.

10.2. Печать форматированного файла

Для вывода форматированного файла awk обеспечивает Си-подобное выражение printf:

printf format, expr1, expr2, ..., exprn

которое печатает expr в соответствии со спецификацией в строке format. Например, программа awk:

{print "%10s %6d\n", &1, $3}

печатает первое поле ($1) как строку из 10 символов, затем пробел, третье поле ($3) как десятичное число в шестисимвольном поле, затем новая строка (\n).

Если в качестве вводного взять файл countries, то программа напечатает следующую таблицу:

USSR 262

Canada 24

China 866

USA 219

Brazil 116

Australia 14

India 637

Argentina 26

Sudan 19

Algeria 18

printf не проставляет автоматически в выводном файле разделителей. Вы должны создать их сами, указав "\n" в формате спецификации.

10.3. Простые шаблоны

Вы можете выбрать определенные записи для печати или другой обработки с использованием простых шаблонов. awk имеет три вида шаблонов. Первое - это шаблоны, называемые выражениями отношений, которые проводят сравнения. Например, оператор "==" тестирует на равенство. Чтобы напечатать строки, для которых 4-е поле равно строке "Asia", можно использовать программу, состоящую из одного шаблона:

$4 == "Asia"

Если в качестве вводного файла взять countries, то получим:

USSR 8650 262 Asia

China 3692 866 Asia

India 1269 637 Asia

Для сравнения используются: >, >=, <, <=, ==, != (не равно). Сравниваться могут числа и строки. Например, из нашего файла мы хотим распечатать только страны, население которых более 100 млн. Для этого введем:

$3 > 100

Получим печать всех строк, в которых третье поле более 100.

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

/US/

Эта программа печатает каждую строку, которая содержит буквы US. Если в качестве вводного файла взять countries, то получим:

USSR 8650 262 Asia

USA 3615 219 North America

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

BEGIN {print "Countries of Asia:"}

/Asia/ {print " ", $1}

На выходе получим:

Countries of Asia:

USSR

China

India

Соседние файлы в предмете Операционные системы