Язык обработки шаблонов AWK
Язык обработки шаблонов AWK
Используется для пакетной обработки текста на более детальном уровне, его средства позволяют выполнять работу с конкретными полями.AWK применим к текстовым файлам, которые имеют структуру таблицы
1. СТРУКТУРА awk-ПРОГРАММЫ
Программа состоит из операторов (правил), имеющих вид:
шаблон {действие}
шаблон {действие}
. . .
Частные случаи:
{действие} - когда действие выполняется для всех строк.
Рекомендуемые материалы
шаблон - когда выводятся строки с данным шаблоном.
Действие может состоять из последовательности операторов, разделяемой ";" или переводом строки или закрывающей скобкой.
Формат шаблона:
$ №столбца ~ /регулярное выражение/
Возможны комментарии (как в shell "#.........").
Пример:
Напечатать строки, которые начинаются на а.
$ AWK ‘/^a/ {print;}’ f-awk
Существует два оператора специального вида ("BEGIN"- начальные установки и "END" - "последействия"):
BEGIN {действие}
шаблон {действие}
шаблон {действие}
. . .
END {действие}
2. ВЫЗОВ awk
awk –f файл_с_программой
awk ‘программа’
Пример1.
Определить размер файлов в текущем каталоге, имя которого начинается на “е”.
$ ls –l | AWK ’BEGIN {a=0;} | $8` |^e.*|{a+=$5} END {print a;}’
Пример2.
$ ls –l | AWK ’BEGIN {a=0;}
{ if (NF>2) # число полей в текущей строчке
{a++; M [a]=$8;} # записывает все файлы в массив
}
END { for (i=1; i<=a; i++ ) print i, M[i] }’
3. awk-ПЕРЕМЕННЫЕ И ВЫРАЖЕНИЯ
В языке awk выделяются две группы переменных: предопределенные и декларированные в программе. Исходные значения предопределенных переменных устанавливаются интерпретатором awk в процессе запуска и выполнения awk-программы.
К предопределенным относятся: Умолчания:
NR номер текущей строки;
NF число полей в текущей строке;
RS разделитель строк на вводе; "