Введение в Unix


         

f average tennis Average value


$ cat > average {total = total + $3} END {print "Average value is", total/NR} ^D $ awk - f average tennis Average value is 8.9 $

Образец поиска в awk может содержать условные выражения. Пример, в котором в файле tennis пишутся все записи, значение третьего поля в которых не меньше 10:

$ awk '$3 >= 10 {print $0}'tennis Steve Daniel 11 Hank Parker 18 Jack Austen 14 $

Знак $0 (доллар-ноль) есть ссылка на всю запись (строку).

В общем случае выражение для условия подчиняется синтаксису, близкому к синтаксису выражений в языке C. Кроме того, в команде awk допустимо указывать отрезок образцов. Пример выборки всех записей, сделанных с 1976 до 1978 г.:

$ sort -n -o chard.s chard $ awk '/1976/, /1978/ {if($2 < 8.00 print $0}' chard.s 1976 7.50 Chateau 1977 7.75 Chateau 1978 5.99 Charles

Как видно из примера, в программах действий для awk можно использовать управляющие структуры с синтаксисом, близким к языку C.

Пример цикла для печати полей всех записей файла в обратном порядке:

$ awk {for (i = NF; i > 0; --i) print $i} f1,

где NF - число полей в записи.

Полное описание средств awk можно найти в статье авторов [6].


Содержание  Назад  Вперед