在$1
区块中使用$2
,END
...时会发生什么,例如:
awk '{print $3}END{print $1 $2}'
我发现$1
和$2
保留了最后一条记录中的值。这种行为是由标准保证还是特定于实现?
答案 0 :(得分:8)
检查docs我们发现它是特定于实施:
传统上,主要由于实施问题,0美元和NF是 在END规则中未定义。 POSIX标准规定NF是 在END规则中可用。它包含来自的字段数 最后输入记录。最可能是由于监督,标准 并没有说$ 0也被保留,虽然逻辑上可以 认为它应该是。事实上,所有BWK都是awk,mawk和gawk 保留$ 0的值以用于END规则。 但请注意 其他一些实现和许多旧版本的Unix awk都没有。