时,我有一个文本文件file.txt
并具有以下方面奇怪awk的打印结果使用函数getline
3
7
而且我发现
awk 'BEGIN{while((getline i<"file.txt")>0){print i}}'
3
7
awk 'BEGIN{while((getline i<"file.txt")>0){print (i>10)}}'
1
1
awk 'BEGIN{while((getline i<"file.txt")>0){print (i>4)}}'
0
1
awk 'BEGIN{while((getline i<"file.txt")>0){print (i>8)}}'
0
0
为什么这种奇怪的行为?
奇怪行为> 10的结果,这应该与> 8结果相同(并且在我的系统上)。否则,awk会评估i是否大于给定值并返回True或False。 – Ursula
既然你发布了一个getline循环来演示这个问题,我们可以假设,如果你让awk正常处理输入(即没有getline),你没有看到这个问题?换句话说,'awk'$ 0> 10''等产生了与上面相同的结果还是不同的结果?我强烈怀疑你刚刚在Windows上创建了你的文件,并且在每行末尾都有control-Ms,或者在文件中有一些其他类型的控制字符,这会导致awk将输入视为字符串,并且整个getline事件是一个红色鲱鱼。 –
在您的输入文件上运行'cat -v file'并更新您的问题和结果,以便我们可以确切地看到它的内容。另外,在你的代码中将'print i'更改为'printf'<%s> \ n“,i',并用此结果更新你的问题。 –