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

相关内容