免费注册 查看新帖 |

Chinaunix

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

求一个文件中2个字段的Shell统计 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-24 09:44 |只看该作者 |倒序浏览
文件

$1,$2
-----

01,a
01,b
01,a
02,a
02,a
02,c
02,d
02,e
...

统计 $1的个数 和 $2 不相同的个数
统计出结果
01, 3 , 2
02, 5, 4


谢谢

论坛徽章:
0
2 [报告]
发表于 2006-12-24 10:50 |只看该作者
方法笨了点,不过结果还可以,急着走,不管对错了,哈哈
  1. awk -F"," '{a[$1]++;}{if(!c[$1,$2]++){b[$1]++}}END{for(i in a) {print i,a[i],b[i]}}' urfile
复制代码

论坛徽章:
0
3 [报告]
发表于 2006-12-24 11:36 |只看该作者
谢谢,解我燃煤之急

论坛徽章:
0
4 [报告]
发表于 2006-12-26 16:37 |只看该作者
awk -F"," '{a[$1]++;}END{for(i in a) {print i,a[i]}}'  file我这样可以打出第一列,  但加入{if(!c[$1,$2]++){b[$1]++}},就不能理解了,请“月波无漾 (一波无漾) ”朋友解释一下,谢谢

论坛徽章:
0
5 [报告]
发表于 2006-12-26 19:06 |只看该作者
原帖由 huanghaojie 于 2006-12-26 16:37 发表
awk -F"," '{a[$1]++;}END{for(i in a) {print i,a}}'  file我这样可以打出第一列,  但加入{if(!c[$1,$2]++){b[$1]++}},就不能理解了,请“月波无漾 (一波无漾) ”朋友解释一下,谢谢

如果$1,$2没出现(也就是$0,当时忘记了,写成$1,$2哈哈)c[$1,$2]为空(未定义?),!c[$1,$2]条件为真,则用b[$1]记录当前第一列相等,第2列不等的行数+1,再读下行的时候,如果出现过的$1,$2,
!c[$1,$2]条件为假不再累加,再有新再累加。
ps:想当然这么走的,误人子弟免责声明。

论坛徽章:
0
6 [报告]
发表于 2006-12-27 09:16 |只看该作者
原帖由 月波无漾 于 2006-12-26 19:06 发表

如果$1,$2没出现(也就是$0,当时忘记了,写成$1,$2哈哈)c[$1,$2]为空(未定义?),!c[$1,$2]条件为真,则用b[$1]记录当前第一列相等,第2列不等的行数+1,再读下行的时候,如果出现过的$1,$2,
!c[$1,$2]条件 ...


谢谢了,这个不太好理解,自己慢慢休会,谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP