このスクリプトに対する反応は混乱しています。
テスト1:
awk '{line_arr[$0] } END {for (line in line_arr) print line}' text_file
出力:
1
2
3
4
テスト2:
awk '{line_arr[$0] } END {for (line in line_arr) print line}' text_file
出力:
is some text.
Hello. Here
Lots of random
text.
文書の内容:
$ cat text_file
Hello. Here
is some text.
Lots of random
text.
なぜ?索引実際の値として保存された配列?
2回目の裁判では、なぜ問題が発生したのですか?
答え1
このまれな構文を使用してawk
行を連想配列。したがって、定義された順序はありません。未定義の動作に達しました。
説得する方法は次のとおりです。連想配列自体の行番号を印刷します。
$ awk '{line_arr[$0]=NR } END \
{for (line in line_arr) print line_arr[line]"=>"line } \
' text_file
3=>Lots of random
1=>Hello. Here
4=>text.
2=>is some text.