使用awk计算文件中数字的频率

时间:2013-04-26 12:58:43

标签: awk

我有以下文件:

1
1
2
3
3
3
4
4
5
5
5
5

我想计算一个数字出现的次数和次数是多少次:例如,数字1出现2次,数字2出现1次,数字3出现3次,数字4次出现2次5次四次;输出将是一个两列文件,其中第一列数字在列中出现的次数,第二列表示重复数字的次数,:

2 2  %(because the number 1 and number 4 appear 2 times and there are only 2 number that appear this often)
1 3
1 1
1 4

我希望输出示例文件可以帮助理解......

2 个答案:

答案 0 :(得分:4)

uniq需要排序输入,因为它只比较连续的行:

uniq -c

所以如果还没有排序:

sort | uniq -c

给出示例的输出将是:

  2 1
  1 2
  3 3
  2 4
  4 5

答案 1 :(得分:2)

这一行应该给你结果:

awk '{a[$0]++}END{for(x in a)b[a[x]]++;for(x in b)print b[x], x}' file

包含您的数据:

kent$  cat file
1
1
2
3
3
3
4
4
5
5
5
5

kent$  awk '{a[$0]++}END{for(x in a)b[a[x]]++;for(x in b)print b[x], x}' file
1 4
1 1
2 2
1 3