统计不同的词

时间:2013-06-19 21:14:51

标签: bash awk

我的输入文件如下:

com.a.b
com.c.d
com.a.b
com.e.f
com.e.f
com.e.f

我希望输出如下:

com.a.b 2
com.c.d 1
com.e.f 3

1 个答案:

答案 0 :(得分:9)

如果您不介意给定输出略有变化,那么传统方法是使用sortuniq

$ sort file | uniq -c
      2 com.a.b
      1 com.c.d
      3 com.e.f

否则,请使用具有关联数组的脚本语言,例如awk

$ awk '{a[$0]++}END{for(k in a)print k,a[k]}' file
com.e.f 3
com.c.d 1
com.a.b 2

管道到sort进行订购:

$ awk '{a[$0]++}END{for(k in a)print k,a[k]}' file | sort
com.a.b 2
com.c.d 1
com.e.f 3