Руководство пользователя для GNU Awk
6. Печатный вывод
6.2 Примеры операторов print
Вот примеры печати цепочек, содержащих внутренние newline (`"n' есть управляющая последовательность для представления символа newline; см. раздел 4.2 [Управляющие последовательности], стр. 24):
$ awk 'BEGIN - print "line one"nline two"nline three" ""'
a line one
a line two
a line three
Следущий пример печатает два первых поля
каждой входной записи с пробелом между ними:
$ awk '- print $1, $2 ""' inventory-shipped
a Jan 13
a Feb 15
a Mar 15...
Обычная ошибка при употреблении оператора --- пропуск запятой между двумя аргументами оператора print. Это часто приводит к печати аргументов на выходе подряд, без пробелов. Причина в том, что расположение рядом двух строковых выражений в awk означает их конкатенацию.
Вот результат той же самой программы
с пропущенной запятой:
$ awk '- print $1 $2 ""' inventory-shipped
a Jan13
a Feb15
a Mar15...
Для человека, незнакомого с файлом `inventory-shipped', результат обоих примеров имеет мало смысла. Заголовок в начале пояснит результат. Добавим заголовки к нашей таблице месяцев ($1) и зеленых корзин, отправленных морем ($2). Сделаем это с помощью образца BEGIN (см. раздел 8.1.5 [Специальные образцы BEGIN и END], стр. 100) для печати заголовков один раз:
awk 'BEGIN - print "Month Crates"
print "----- ------" "" - print $1, $2 ""' inventory-shipped
Вы уже догадались, что получится? При исполнении программа напечатает следующее:
Month Crates ----- ------ Jan 13 Feb 15 Mar 15...
Заголовки и табличные данные не выравниваются! Можно исправить это, печатая несколько пробелов между полями:
awk 'BEGIN - print "Month Crates"
print "----- ------" "" - print $1, " ", $2 ""' inventory-shipped
Нетрудно себе представить, что этот путь окажется сложным, если используется много столбцов. Подсчет пробелов для двух или трех довольно прост, но если их больше, вы можете сбиться в подсчете. Для таких целей был создан оператор printf (см. раздел 6.5 [Использование операторов printf для декоративной печати], стр. 64); одно из его назначений состоит в выравнивании столбцов данных. Заметим, что можно продолжать операторы print или printf, используя newline после любой запятой (см. раздел 2.6 [awk-операторы и строки], стр. 17).
Назад | Вперед
Содержание (общее) | Содержание раздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|