Утилита gawk позволяет определять переменные. Существует три типа переменных: переменные для обозначения полей, специальные переменные и пользовательские переменные. Переменные для обозначения полей и специальные переменные утилита определяет автоматически. Пользователь может определять собственные переменные. Кроме того, можно определять арифметические и строковые константы. Арифметические константы состоят из цифр, а строковые — из любых символов, заключенных в двойные кавычки.
Поле — это любой набор символов, ограниченный разделителем полей. По умолчанию в качестве разделителя используется пробел или знак табуляции. Как и другие фильтры, gawk нумерует поля, начиная с 1. Утилита определяет переменную для каждого поля файла. Имя переменной, обозначающей поле, состоит из знака $ и номера поля. Так, имя $2 указывает на второе поле. Переменная $0 — это специальная переменная, содержащая всю строку.
В следующем примере выводятся второе и четвертое поля файла books, именуемые $2 и $4.
Books
Tempest Shakespeare 15.75 Penguin
Christmas Dickens 3.50 Academic
Iliad Homer 10.25 Random
Raven Рое 2.50 Penguin
$ gawk '{print $2, $4}' books
Shakespeare Penguin Dickens Academic
Homer Random
Рое Penguin
Переменной можно присвоить значение с помощью операции присваивания =. Значение может быть содержимым переменной (скажем, переменной, обозначающей поле), специальной переменной или пользовательской переменной. Оно может быть и константой (см. следующий раздел). В нашем примере пользователь присваивает переменной myfield значение второго поля.
$ gawk ‘{myfield = $2; print myfield}' books
Shakespeare Dickens
Homer Рое
По умолчанию gawk разделяет поля символами пробела или табуляции. Однако вы можете определить собственные разделители, которые нужно явно задать посредством опции -F. Фактически при использовании этой опции устанавливается специальная переменная FS, выступающая в роли разделителя поля. В качестве разделителя можно указать любой символ.