AWK中的“getline> 0”是什么意思?

时间:2014-05-11 18:57:26

标签: redirect awk

我一直看到这个awk成语,我想知道 究竟是什么意思

while (getline <"FILE" > 0)

我理解getline正在做什么,但我没有重定向到0。

根据The Awk Programming Language,你这样做是为了避免a 在FILE不存在的情况下,无限循环。

为什么重定向会消除该错误?究竟是什么被重定向?它不能是getline的返回值,否则,在评估时是什么表达式?我错过了什么!

谢谢。

编辑:感谢您的评论。我让重定向操作符与关系运算符混淆。如果它是这样编写的话,也许会更清楚

while ((getline <"FILE") > 0)

甚至更清楚

while (0 < (getline <"FILE"))

再次感谢!

1 个答案:

答案 0 :(得分:1)

>符号正在测试getline的返回值(大于零)。它不是重定向标志。 来自https://www.gnu.org/software/gawk/manual/html_node/Getline.html

  

getline命令在找到记录时返回1,如果找到则返回0   遇到文件的结尾。如果获得一个错误   记录,例如无法打开的文件,然后getline返回-1。   在这种情况下,gawk将变量ERRNO设置为描述该变量的字符串   发生错误。

混淆可能来自getline未使用输出重定向到文件的事实。 (它仅用于读取数据)。因此>符号不应该含糊不清。 (它不能代表输出重定向) 要将某些内容打印到文件,您可以使用printprintf命令中的输出重定向。