Awk 从模式中分离动作

Awk 从模式中分离动作,awk,Awk,考虑: $ echo line1 | awk '1END{ print "line2"}' line1 line2 注意1和END之间缺少空格。这是标准,还是我实现awk的一个怪癖?将操作与以下地址分开的语法规则是什么?您可能使用的是旧版本的awk。在原始的awk语言中,不需要在同一行上用分号分隔规则。添加它是为了与操作中对语句的处理保持一致 我发现: 这适用于我使用GNU Awk 4.0.1的情况: $ echo line1 | awk '1; END { print "line2" }'

考虑:

$ echo line1 | awk '1END{ print "line2"}'
line1
line2

注意
1
END
之间缺少空格。这是标准,还是我实现awk的一个怪癖?将操作与以下地址分开的语法规则是什么?

您可能使用的是旧版本的
awk
。在原始的
awk
语言中,不需要在同一行上用分号分隔规则。添加它是为了与操作中对语句的处理保持一致

我发现:

这适用于我使用GNU Awk 4.0.1的情况:

$ echo line1 | awk '1; END { print "line2" }'
line1
line2

如果我删除
我得到一个语法错误。HTH

什么平台和什么版本的AWK?我从Linux上的
gawk
nawk
mawk
中得到一个语法错误。这是OSX上的awk。(来自内存:awk-v打印了类似于
awkversion2007….
的内容,也许我会在今天晚些时候访问机器时更新注释。)在没有任何空间的情况下,gawk3.1.3不会给出语法错误,只会执行
END
块。在1后面插入分号对我使用
gawk
3.1.6和3.1.7是有效的。在这些版本上,空格或无空格会给我一个语法错误。显示此行为的版本是BSD(OS X)上的awk版本20070501