Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
Redirect 什么是;getline>;0“;是什么意思?_Redirect_Awk - Fatal编程技术网

Redirect 什么是;getline>;0“;是什么意思?

Redirect 什么是;getline>;0“;是什么意思?,redirect,awk,Redirect,Awk,我一直看到这个awk成语,我想知道它到底是什么意思 while (getline <"FILE" > 0) while(获取第0行) 我了解getline正在做什么,但我无法重定向到0 根据,这样做是为了避免在文件不存在的情况下出现无限循环 为什么重定向会消除这个错误?到底是什么被重定向?它不能是getline的返回值,否则,求值时是什么表达式?我错过了什么 编辑:谢谢您的评论。我把重定向操作符和关系操作符搞混了。如果是这样写的话,也许会更清楚 while ((getline &

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

while (getline <"FILE" > 0)
while(获取第0行)

我了解getline正在做什么,但我无法重定向到0

根据,这样做是为了避免在文件不存在的情况下出现无限循环

为什么重定向会消除这个错误?到底是什么被重定向?它不能是getline的返回值,否则,求值时是什么表达式?我错过了什么

编辑:谢谢您的评论。我把重定向操作符和关系操作符搞混了。如果是这样写的话,也许会更清楚

while ((getline <"FILE") > 0)
while((getline 0)
甚至更清楚

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

while(0)(getline符号
正在测试
getline
的返回值(大于零)。它不是重定向符号。 发件人:

getline命令在找到记录时返回一,在找到记录时返回零 遇到文件结尾。如果在获取 记录,例如无法打开的文件,然后getline返回-1。 在本例中,gawk将变量ERRNO设置为描述 发生的错误

这种混淆可能是因为
getline
没有使用文件的输出重定向(它仅用于读取数据)。因此
符号应该没有歧义。(它不能表示输出重定向)
要将某些内容打印到文件中,您可以使用
print
printf
命令的输出重定向。

我了解getline正在做什么,并且我已经阅读了手册。>0表示什么?@captaincurrie它将
getline
的返回值与数字0进行比较。因此,如果
getline
找到记录(返回值=1),它继续读取
while
循环中的记录。@captaincurrie如果数字大于
0
,继续运行while循环。哦,天啊!这很明显。所有这些重定向操作符让我很困惑。这完全有道理。谢谢大家!@HåkonHægland谢谢你们澄清了答案!这样会更好如果你发布你喜欢做的事情,以及一些数据文件。这个解决方案可能会更改为:
awk'FNR==NR{do some;next}{do more}FILE otherdata
谢谢jotne。我回答了我自己的问题。语法让我陷入了一个循环,我只是说这可能是另一个解决方案(更好?)要对
awk
使用标准输入,而不是在
循环和
getline
时使用
FNR==NR
读取它,您应该阅读