Awk 如果字段变量不';不存在?
我试图理解一些我继承的脚本,并利用awk。其中一个脚本中有以下行:Awk 如果字段变量不';不存在?,awk,Awk,我试图理解一些我继承的脚本,并利用awk。其中一个脚本中有以下行: report=`<make call to Java class that generates a report` report=`echo $report|awk '{print $5}'` awk生成的报告与原始报告相同 报告中没有第5个字段,因为没有空格,也没有定义其他字段分隔符。我知道使用$0将返回所有字段。指定一个不存在的字段是否也会这样做?否: echo "1 2 3"|awk '{print $5}' 上
report=`<make call to Java class that generates a report`
report=`echo $report|awk '{print $5}'`
awk生成的报告与原始报告相同
报告中没有第5个字段,因为没有空格,也没有定义其他字段分隔符。我知道使用$0将返回所有字段。指定一个不存在的字段是否也会这样做?否:
echo "1 2 3"|awk '{print $5}'
上面没有打印任何内容。不知道为什么它的行为像您指定的那样。如果您要使用
“
而不是”
,那么它会打印出来,因为$5将由shell扩展,但按照编写方式,它不应该被扩展。您的测试有问题
在这种情况下,预期的awk行为是为每个输入行打印一个空行,这是我使用1TA或gawk运行时看到的。我找到了答案。awk不是对报告内容执行的,而是对生成报告的调用的结果。有许多system.out行,第五行是文件名称(包括目录)。因此,它获取该参数并在脚本中进一步使用它,该脚本只是复制它(因此具有相同的内容)。
echo "1 2 3"|awk '{print $5}'