【发布时间】:2025-12-05 15:50:02
【问题描述】:
在END 块中使用$1、$2 ... 会发生什么情况,例如:
awk '{print $3}END{print $1 $2}'
我发现$1 和$2 保留了最后一条记录中的值。这种行为是由标准保证的还是特定于实现的?
【问题讨论】:
-
我认为它是特定于实现的。我在spec 中没有看到任何直接声明字段变量未在
END块中清除的内容。 -
我找不到专门针对这些字段的引用,但许多其他变量,例如
NR,被指定为处理最后一条记录的值,因此不会疯狂地将其扩展到字段变量。 -
它是特定于实现的。例如,在 HP-UX 中,
$0为空。 awk's END block behaviour on HP-UX