Что произойдет при использовании $1
, $2
... в END
блоке, как:Поля, определенные в блоке END в AWK?
awk '{print $3}END{print $1 $2}'
Я обнаружил, что $1
и $2
сохраняют значения из последней записи. Является ли это поведение гарантированным стандартом или оно специфично для реализации?
Я бы предположил, что он специфичен для реализации. Я ничего не видел в [spec] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html), который прямо утверждает, что переменные поля * не * очищены в блоке 'END' , – chepner
Я не могу найти ссылку специально для этих полей, но многие другие переменные, например, «NR», указаны для того, чтобы иметь значение последней обработанной записи, поэтому было бы не сумасшедшим продлить это поле переменные. –
Реализация специфична. См. Например, что в HP-UX '$ 0' пусто. [поведение END блока awk на HP-UX] (http://stackoverflow.com/q/29970249/1983854) – fedorqui