我对这些脚本的反应感到困惑。
试验一:
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.
为什么是指数数组存储为实际值?
为什么二审就出问题了?
答案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.