Извлечь имя файла из другого файла

Согласно руководству GNU awk, немного неясно, что $0 должно содержаться в правиле END. POSIX требует, чтобы NF "сохранял [свое] значение" (*), но не упоминает $0.

Вероятнее всего, по недосмотру в стандарте не сказано, что $0 также сохраняется, хотя по логике можно было бы подумать, что так и должно быть. Фактически, все BWK awk, mawk и gawk сохраняют значение $0 для использования в правилах END. Имейте в виду, однако, что некоторые другие реализации и многие старые версии Unix awk этого не делают.

В некотором смысле я нахожу такое поведение логичным. Оставив $0 для блока END, можно легко получить доступ к последней записи, если это необходимо. К первой записи легко получить доступ с помощью NR == 1 {...}, поэтому специальное ключевое слово не требуется. С другой стороны, выполнение блоков BEGIN перед загрузкой первой записи позволяет установить FS или RS вовремя, чтобы они стали активными для первой записи.

(* Что бы это ни значило, см. комментарии.)

1
20.06.2016, 14:18
0 ответов

Теги

Похожие вопросы