如果字段变量不存在,awk是否打印全部?

时间:2010-11-16 18:46:45

标签: awk

我试图了解一些我继承并使用awk的脚本。其中一个脚本是这些行:

report=`<make call to Java class that generates a report`
report=`echo $report|awk '{print $5}'`

第1行生成的报告包含以下数据:

ABC1234:0123456789:ABCDE
ABC4321:9876543210:EDCBA
...

awk生成的报告与原始报告相同。

报告中没有第5个字段,因为没有空格,并且尚未定义不同的字段分隔符。我知道使用$ 0将返回所有字段。指定不存在的字段是否也这样做?

2 个答案:

答案 0 :(得分:0)

没有

echo "1 2 3"|awk '{print $5}'

上面没有打印。不知道为什么它表现得像你指定的那样。如果您使用"而不是',那么它会打印,因为$ 5将由shell扩展,但是如果写的话不应该。

答案 1 :(得分:0)

你的测试出了问题。

在这种情况下,预期的awk行为是为每条输入行打印一个空白行,这就是我在使用1TA或gawk运行时看到的内容。