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