이 스크립트에 대한 반응이 혼란스럽습니다.
테스트 하나:
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.