awk + ​​最初のフィールドの単語数を計算する方法

awk + ​​最初のフィールドの単語数を計算する方法

私の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 awkgawk)、一部を使用することもできます。事前定義されたソート配列を繰り返す方法と配列を印刷する方法について説明します。以下を使用すると、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

おすすめ記事