免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 12216 | 回复: 19
打印 上一主题 下一主题

请教awk如何同时统计 总数与不重复个数? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-26 16:12 |只看该作者 |倒序浏览
样本数据如下
[root@test]# cat a.txt
13 1209188074182041
12 1209185885333940
12 1209185089989307
12 1209185891525318
12 1209185894625725
12 1209185896077843
12 1209185897013146
12 1209185911626133
12 1209185088770989
12 1209185923985593
12 1209185927800131
12 1209185928818943
12 1209185929848318
12 1209185947772651
12 1209185947700450
12 1209185971472056
12 1209185973949285
12 1209185980428567
12 1209185995006463
13 1209186004855839
13 1209186006050497
13 1209186006810081
13 1209186015589432
13 1209186018948762
13 1209186028141388
13 1209186046586400
13 1209186046820703
13 1209186053524232
13 1209186057213856
13 1209186064210214
13 1209186067414653


希望以第1列为索引,计算出重复值与汇总值

比如
12 200 160
13 230 140
也就是 "12" 一共有200个,其中不重复的有160个
13一共有230个,其中不重复的有140个。

我用awk数组仅能显示出 12有200个,如何同时统计不重复的个数呢?请教
cat a.txt|awk '{a[$1]++}END{for (i in a) print i" "a}'

论坛徽章:
0
2 [报告]
发表于 2008-04-26 16:28 |只看该作者
我自己有个思路,但是不知道如何体现出来
就是先sort,然后每读一行,a[$1]数组加一,同时用变量b记录$2,看看下一行的$2是否等于b,如果相等,c[$1]++
最后打印 i, a[$1],c[$1]
可是不知道该怎么在awk里实现。。请大家指点一下

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
3 [报告]
发表于 2008-04-26 16:45 |只看该作者

  1. awk '{a[$1]++}b[$1,$2]!=1{b[$1]++}{b[$1,$2]=1}END{for (i in a)print i,a[i],b[i]}' a.txt
复制代码

论坛徽章:
0
4 [报告]
发表于 2008-04-26 16:55 |只看该作者
谢谢楼上的大侠!
功能实现了,但没看明白 。。。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2008-04-26 17:37 |只看该作者
呵呵,如果这样写,应该就可以看明白了
awk '{a[$1]++}flag[$1,$2]!=1{b[$1]++}{flag[$1,$2]=1}END{for (i in a)print i,a,b}' a.txt

论坛徽章:
0
6 [报告]
发表于 2008-04-26 18:00 |只看该作者
谢谢,了解了。非常感谢!

论坛徽章:
0
7 [报告]
发表于 2010-06-22 19:22 |只看该作者
好。不错。得学会触类旁通

论坛徽章:
0
8 [报告]
发表于 2010-06-22 20:53 |只看该作者
wk '{array[$1]++;if(!($0 in array1)){array1[$1]++;array1[$0]}}END{for(i in array){print i" "array[i]" "array1[i]}}' linux.171

论坛徽章:
0
9 [报告]
发表于 2010-06-22 21:36 |只看该作者
学习了

论坛徽章:
0
10 [报告]
发表于 2010-06-22 23:15 |只看该作者
看了头晕
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP