내 rhel 7.2 시스템에 다음 파일이 있습니다.
more file.txt
car12
car55
car87
car12
car98
car55
car12
car12
car55
car65
car12
car65
파일에 단어와 수량을 추가하여 다음과 같은 예상 결과를 얻으려고 합니다.
car12 - 5
car55 - 3
car87 - 1
car98 - 1
car65 - 2
awk를 사용하여 위 단어와 해당 수량을 어떻게 추가할 수 있나요?
답변1
실제로 awk가 필요하지 않으며 간단히 다음을 수행할 수 있습니다.
$ sort file | uniq -c
5 car12
3 car55
2 car65
1 car87
1 car98
하지만 그렇습니다. awk에서도 가능합니다.
$ awk '{a[$1]++}END{for(word in a){print word" - "a[word]}}' file
car55 - 3
car65 - 2
car87 - 1
car12 - 5
car98 - 1
그리고GNU awk( gawk
), 일부를 사용할 수도 있습니다.사전 정의된 정렬배열을 반복하는 방법과 배열을 인쇄하는 방법에 대해 설명합니다. 다음 을 사용하면 PROCINFO["sorted_in"]="@ind_str_asc"
결과가 가장 많은 것부터 가장 적은 것 순으로 인쇄됩니다 .
$ awk '{a[$1]++}
END {
PROCINFO["sorted_in"]="@ind_str_asc";
for(word in a){print word" - "a[word]}
}' file
car12 - 5
car55 - 3
car65 - 2
car87 - 1
car98 - 1