Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 如果字段变量不';不存在?_Awk - Fatal编程技术网

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}' 上

我试图理解一些我继承的脚本,并利用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}'

上面没有打印任何内容。不知道为什么它的行为像您指定的那样。如果您要使用
而不是
,那么它会打印出来,因为$5将由shell扩展,但按照编写方式,它不应该被扩展。

您的测试有问题


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

我找到了答案。awk不是对报告内容执行的,而是对生成报告的调用的结果。有许多system.out行,第五行是文件名称(包括目录)。因此,它获取该参数并在脚本中进一步使用它,该脚本只是复制它(因此具有相同的内容)。
echo "1 2 3"|awk '{print $5}'