awk在HP-UX上的END块行为

Dim*_*osP 1 unix shell awk hp-ux

为什么awk 'END{print}' file返回一个空字符串?

我检查了文件,它不以空行结束.

我在HP-UX上.

fed*_*qui 5

来自GNU Awk指南 - 7.1.4.2来自BEGIN和END规则的输入/输出

传统上,主要由于实现问题,在END规则中未定义$ 0和NF.POSIX标准指定NF在END规则中可用.它包含最后一个输入记录中的字段数.最有可能是由于疏忽,标准并没有说0美元也被保留,尽管逻辑上人们会认为它应该是.事实上,所有BWK awk,mawk和gawk都保留了$ 0的值,以便在END规则中使用.但请注意,其他一些实现和许多旧版本的Unix awk都没有.

所以,一般来说,END现在包含最后一个$0,而在你的[旧] awk版本中它没有.

例如,我的GNU Awk确实以"新"的方式工作:

$ awk --version
GNU Awk 4.1.0, API: 1.0
$ seq 10 | awk 'END {print}'
10
Run Code Online (Sandbox Code Playgroud)