免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: conall
打印 上一主题 下一主题

[文本处理] 再问统计不重复的项目问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-11-19 11:51 |只看该作者
回复 7# yestreenstars
正解:
awk 'BEGIN{FS=OFS=";"}NR==FNR&&!a[$1,$2,$3,$4,$5]++{b[$5]++;if($7~/^ *$/)c[$5]++;next}{print $0,b[$5],c[$5]}'
只是不知道,我这里为什么不行?
当$7~/      /时,还是要!b[$1,$2,$3,$4,$5]不重复啊?
nawk 'BEGIN{FS=OFS=";"}NR==FNR{if(\!a[$1,$2,$3,$4,$5]++)an[$5]++;else if($7~/      /&&\!b[$1,$2,$3,$4,$5]++)bn[$5]++;next}{print $0,an[$5],bn[$5]}' 1.txt 1.txt

   

论坛徽章:
0
12 [报告]
发表于 2013-11-19 11:59 |只看该作者
自己修改了一下:
nawk 'BEGIN{FS=OFS=";"}NR==FNR{if(\!a[$1,$2,$3,$4,$5]++)an[$5]++;if($7~/      /&&\!b[$1,$2,$3,$4,$5]++)bn[$5]++;next}{print $0,an[$5],bn[$5]}' 1.txt 1.txt  去掉else实际也是可以
1、为什么加了esle就不行?
2、难道if($7~/^ *$/)c[$5]++————这里已经包含了\!b[$1,$2,$3,$4,$5]++,这个条件吗?可是他没有包含在第一个if的大括号里啊?
awk 'BEGIN{FS=OFS=";"}NR==FNR&&!a[$1,$2,$3,$4,$5]++{b[$5]++;if($7~/^ *$/)c[$5]++;next}{print $0,b[$5],c[$5]}'

论坛徽章:
0
13 [报告]
发表于 2013-11-19 12:03 |只看该作者
nawk 'BEGIN{FS=OFS=";"}NR==FNR{if(\!a[$1,$2,$3,$4,$5]++){an[$5]++;if($7~/     /)bn[$5]++};next}{print $0,an[$5],bn[$5]}' 1.txt 1.txt

nawk 'BEGIN{FS=OFS=";"}NR==FNR{if(\!a[$1,$2,$3,$4,$5]++)an[$5]++;if($7~/      /&&\!b[$1,$2,$3,$4,$5]++)bn[$5]++;next}{print $0,an[$5],bn[$5]}' 1.txt 1.txt

nawk 'BEGIN{FS=OFS=";"}NR==FNR&&!a[$1,$2,$3,$4,$5]++{b[$5]++;if($7~/^ *$/)c[$5]++;next}{print $0,b[$5],c[$5]}' 1.txt 1.txt

晕菜,这3种用法都是可以的,谢谢各位前辈
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP