awk求列排重、累加的写法;

测试数据a.txt:
a 2
b 3
c 6
a 8
d 9
希望结果:
第1列是第一字段重复的次数;
第2列是第一字段去重复;
第3列是第一字段重复的第二字段累加;
2    a   10
1    b     3
1    c      6
1    d     9

我自己写了个awk '{count[$1]+=$2}END{for(i in count)print i,count[i]}' a.txt,只能实现第2、3列的功能,请各位高手帮改改,感谢!

作者: spouter   发布时间: 2011-06-08

回复 spouter


再加一个用来计数的数组就可以实现了...再想想....很简单的

作者: 南极雨   发布时间: 2011-06-08

  1. awk '{a[$1]+=$2;b[$1]++}END{for(i in a)print b[i],i,a[i]}' file
  2. 2 a 10
  3. 1 b 3
  4. 1 c 6
  5. 1 d 9
复制代码

作者: zooyo   发布时间: 2011-06-08

回复 南极雨


    谢谢指点!

作者: spouter   发布时间: 2011-06-08

回复 zooyo


    谢谢

作者: spouter   发布时间: 2011-06-08