Поле переменных
10.14. Поле переменных
Поля текущей записи могут ссылаться на поле переменных $1, $2, ... $NF. Эти переменные могут использоваться в арифметических или строковых операциях, им могут присваиваться различные значения. Например, вы можете разделить второе поле файла countries на 1000, чтобы площадь измерялясь не в тысячах, а в миллионах квадратных метров: { $2 /= 1000; print } или назначить новую строку полю: BEGIN { FS = OFS = "\t" } $4 == "North America" { $4 = "NA" } $4 == "South America" { $4 = "SA" } { print }
Действие BEGIN устанавливает поле разделителя вводного файла (FS) и поле разделителя выводного файла (OFS) в значение табуляции. Обратите внимание, что print в четвертой строке программы печатает значение $0 после того как оно было модифицировано предыдущими присвоениями.
К полям можно получить доступ при помощи выражений. Например, $(NF-1) означает: со второго до последнего поля текущей записи. Здесь необходимы круглые скобки, т.к. значение $NF-1 означает: на единицу меньше, чем значение последнего поля.
Поле переменных, ссылающееся на несуществующее поле, например, $(NF+1), имеет в качестве своего начального значения пустую строку. Тем не менее новое поле может быть создано при присвоении ему значения. Например, следующая программа, вызвавшая файл countries, создает пять полей, дающих плотность населения: BEGIN { FS = OFS = "\t" } { $5 = 1000*$3/$2; print }
Количество полей может изменяться от записи к записи, но обычно число их ограничивается 100 полями.