私の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