Всякие дополнительные аргументы командной строки нормально рассматриваются как входные файлы для обработки в указанном порядке. Однако, аргумент, который имеет вид var=value, присваивает значение value переменной var и вовсе не означает никакой файл. Все такие аргументы доступны вашей awk-программе в массиве ARGV (см. главу 10 [Встроенные переменные], стр. 115). Параметры командной строки и текст программы ( если он присутствовал) не попадают в ARGV. Все другие аргументы, включая присваивания переменным, попадают в него. При обработке любого элемента ARGV gawk устанавливает переменную ARGIND на индекс текущего элемента ARGV. Различие между аргументами имен файлов и присваиваний переменным определяется, когда awk собирается открыть следующий входной файл. В этой точке выполнения программы он проверяет "file name" чтобы проверить, не есть ли это присваивание переменной; если так, то awk вместо чтения файла присваивает значение переменной. Поэтому переменные получают значения фактически после прочтения всех файлов, указанных ранее этого присваивания. В частности, значения таких переменных недоступны внутри правила BEGIN (см. раздел 8.1.5 [Специальные образцы BEGIN и END, стр. 100), потому что такие правила выполняются до начала сканирования списка аргументов.
В значениях переменных, заданных в командной строке, обрабатываются управляющие последовательности (d.c.) (см. раздел 4.2 [Управляющие последовательности], стр. 24). В некоторых ранних реализациях, когда присваивания переменным встречались до имен файлов, они выполнялись до выполнения правил BEGIN. Тем самым поведение awk было непоследовательным.
1 Не рекомендуется.
Некоторые присваивания из командной строки оказывались доступными внутри правил BEGIN, а другие нет. Некоторые приложения зависели от этого "свойства". Когда awk была изменена для устранения противоречий, параметр `-v' был добавлен для обеспечения приложений, которые зависели от прежнего поведения.
Возможность присваивания из командной строки наиболее удобна для присваивания таким переменным как RS, OFS и ORS, которые управляют форматом ввода и вывода, перед просмотром файлов с данными. Это также полезно для проверки состояния, если необходимы повторные просмотры файлов с данными.
Имея возможность присваивания переменным, не обязательно пользоваться параметром `-F' для установки значения FS. Он остается для исторической совместимости.