我有一个文本文件file.txt
并具有以下上下文
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
为什么这种奇怪的行为?
答案 0 :(得分:0)
大多数实现(检查gawk和mawk)如果可能的话将字段和行转换为数字..但也许你的并不是为getline做的。在那种情况下:
字符串比较是如何工作的,&#34; 3&#34;大于&#34; 10&#34;:
awk 'BEGIN {print ("3">10)}'
1
尝试强制它成为一个数字:
awk 'BEGIN {print (+"3">10)}'
0
awk 'BEGIN {print (+"11">10)}'
1
答案 1 :(得分:-1)
使用gawk 4.1.0(Windows版)测试:
$ cat file
3
7
$ awk "BEGIN{while((getline i<\"file\")>0){print (i>10)}}"
0
0
$ awk "BEGIN{while((getline i<\"file\")>0){print (i>9)}}"
0
0
$ awk "BEGIN{while((getline i<\"file\")>0){print (i>8)}}"
0
0
$ awk "BEGIN{while((getline i<\"file\")>0){print (i>7)}}"
0
0
$ awk "BEGIN{while((getline i<\"file\")>0){print (i>6)}}"
0
1
$ awk "BEGIN{while((getline i<\"file\")>0){print (i>5)}}"
0
1
$ awk "BEGIN{while((getline i<\"file\")>0){print (i>4)}}"
0
1
$ awk "BEGIN{while((getline i<\"file\")>0){print (i>3)}}"
0
1
$ awk "BEGIN{while((getline i<\"file\")>0){print (i>2)}}"
1
1
$ awk "BEGIN{while((getline i<\"file\")>0){print (i>1)}}"
1
1
$ awk "BEGIN{while((getline i<\"file\")>0){print (i>0)}}"
1
1
正常行为。