В языке awk выделяются две группы переменных: предопределенные и декларированные в программе. Исходные значения предопределенных переменных устанавливаются интерпретатором awk в процессе запуска и выполнения awk-программы.
К предопределенным относятся:
Умолчания:
NR - номер текущей строки
NF - число полей в текущей строке
RS - разделитель строк на вводе
"\0"
FS - разделитель полей на вводе
пробел и/или табуляция
ORS - разделитель строк на выводе
RS
OFS - разделитель полей на выводе
FS
OFMT - формат вывода чиcл
"%.6g"
FILENAME - имя входного файла.
Прочим переменным пользователь может присваивать начальные значения. По умолчанию "0" или пустая строка (что здесь равнозначно!).
Типы переменных:
позиционные,
числа с плавающей точкой,
строка символов,
массив.
Интерпретатор awk рассматривает переменную как строковую, пока не возникает необходимость выполнить операции:
Массив не об'является, а начинае существовать в момент первого использования. Индекс массива - любое ненулевое значение или строка. Массивы ассоциативные, т.е. не по вычисляемому индексу, а по совпадению содержания, например:
day [Jan][31] = Mon
day [Feb][01] = Tue
day [Feb][02] = Wed
Массивы удобно использовать при суммированиях, например записи выплат имеют вид (файл "p-1"):
John 100
Mary 200
Mary 200
John 100
John 300
awk '{sum[$1] += $2; print $1 sum[$1]} ' < p-1