Поля текущей записи могут
ссылаться на поле переменных $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
полями.
|