時,我有一個文本文件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',並用此結果更新你的問題。 –