我做的順序,如何設置的for循環
$ awk '{ a[$0] } END{for (i in a)print i }' <(echo -e "bar\nfoo")
foo
bar
我也嘗試過其他的輸入文件,以及這些for循環運行的順序似乎是隨機的。
你怎麼給AWK說:保持秩序的文件中,所以這裏應該是,
bar
foo
感謝,
埃裏克J.
我做的順序,如何設置的for循環
$ awk '{ a[$0] } END{for (i in a)print i }' <(echo -e "bar\nfoo")
foo
bar
我也嘗試過其他的輸入文件,以及這些for循環運行的順序似乎是隨機的。
你怎麼給AWK說:保持秩序的文件中,所以這裏應該是,
bar
foo
感謝,
埃裏克J.
你需要跟蹤您自己的訂單。在這種情況下,這很簡單,只要:
awk '{a[NR] = $0} END { for(i=1; i<= NR; i++) print a[i]}'
在AWK的陣列是關聯的,所以索引到陣列可以是任意字符串。因此,索引上沒有自然順序,因此(i in a)
語法按實現確定的順序返回索引。也就是說,該語言不會對訂單強加一個要求,並且實現使用任何想要存儲數據的數據結構,並以最方便的方式遍歷數據結構。所以不同版本的awk可能會給出不同的順序。順序不是隨機的,但如果不理解底層實現,則不能輕鬆進行預測。通過使用整數作爲索引,您可以控制訂單。
請參閱@ WilliamPursell針對此特定案例的回答,還請參閱GNU awk手冊(http://www.gnu.org/software/gawk/manual/gawk.html#Controlling-Array-Traversal)瞭解如何設置in
運算符的評估順序。
在這裏看... http://stackoverflow.com/questions/3113057/how-can-i-reorder-a-file-by-ascending-order-column – ctasca