Unix Man (Справочное руководство)


AWK(1) - часть 3


Выражение сравнения - это одна из следующих конструкций:

выражение опер_сопост регулярное_выражение выражение опер_сравн выражение

где опер_сравн - любая из шести операций сравнения языка C, опер_сопост это ~ (содержится) или !~ (не содержится).

Условие - это арифметическое выражение, выражение сравнения или их логическая комбинация.

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

BEGIN { FS = c }

Остальные специальные переменные:

NF Количество полей в текущей записи. NR Порядковый номер текущей записи. FILENAME Имя файла, из которого в данный момент производится ввод. OFS Разделитель полей при выводе, по умолчанию пробел. ORS Разделитель записей при выводе, по умолчанию перевод строки. OFMT Формат вывода чисел, по умолчанию %.6g.

ПРИМЕРЫ

  1. Вывести строки файла f1, содержащие более 72 символов:

    awk 'length > 72' f1

  2. Вывести первые два поля файла f2 в обратном порядке:

    awk '{ print $2, $1 }' f2

  3. Сложить числа, стоящие в первом столбце файла f3, вывести сумму и среднее арифметическое:

    В файле prog:

    { s += $1 } END { print "sum is", s, " average is", s/NR }

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

    awk -f prog f3

  4. Вывести поля файла f4 в обратном порядке:

    awk '{ for (i = NF; i > 0; --i) print $i }' f4

  5. Вывести все строки файла f5, находящиеся между парами start/stop

    awk '/start/,/stop/' f5

  6. Вывести те строки файла f6, у которых первое поле не совпадает с первым полем предыдущей строки:

    awk '$1 != prev { print; prev = $1 }' f6

  7. Распечатать файл f7, вставляя после слова "Page" номер страниц, начиная с пятой:

    В файле prog:

    /Page/ { $2 = n++ } { print }

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

    awk -f prog n=5 f7

СМ. ТАКЖЕ


, , .

в Справочнике программиста.

СЮРПРИЗЫ


Входные пробелы не сохраняются при выводе, если поля этой записи подвергались изменениям.

В языке команды awk отсутствуют явные преобразования между цепочками символов и числами. Чтобы выражение трактовалось как число, прибавьте к нему 0; чтобы трактовалось как цепочка - сконкатенируйте его с пустой цепочкой ""




Начало  Назад  



Книжный магазин