我有这个文件:
count,name
1,B1
1,B1
1,B3
1,B3
1,B2
1,B2
1,B2
我经常需要在每组总数上获得计数器。第一个数字总是一个。唯一重要的是小组。我写了一个java程序来为我做。输出将是
B1: 2
B2: 3
B3: 2
格式并不重要,只是每组名称的计数器。
我想知道,这可以用bash完成吗? AWK? SED?
答案 0 :(得分:4)
嗯,使用sort
和uniq
解决这个问题非常简单:
$ sort file | uniq -c
2 1,B1
3 1,B2
2 1,B3
然后,如果您需要正确的格式,可以使用cut
去除第一列,并使用awk
打印结果:
$ cut -d ',' -f 2 file | sort | uniq -c | awk '{printf "%s: %d\n", $2, $1}'
B1: 2
B2: 3
B3: 2
答案 1 :(得分:1)
使用awk,我会写
awk -F, 'NR>1 {n[$2]++} END {OFS=":";for (x in n) print x, n[x]}' file
假设您在文件中确实有一个标题行。