免费注册 查看新帖 |

Chinaunix

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

两个文件求和 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-16 17:50 |只看该作者 |倒序浏览
求助,自己水平有限,没想明白怎么折腾,文件1和文件2中的日期相同的网站访问统计求合,如果没有0计算,生成文件3的样子

文件1
2010/08/01          qw121.qhit.net          17189
            mobile.daiwa.co.jp         15715
            ot13.qhit.net         6514
            mobile.daiwa.jp         982
            set.daiwa.co.jp         6
2010/08/02         qw121.qhit.net         331485
            mobile.daiwa.co.jp         259344
            ot13.qhit.net         187007
            mobile.daiwa.jp         1400
            set.daiwa.co.jp         18
2010/08/03         qw121.qhit.net         348013
            mobile.daiwa.co.jp         286724
            ot13.qhit.net         198367
            mobile.daiwa.jp         2061
            set.daiwa.co.jp         20

文件2
2010/08/01          mobile.daiwa.co.jp          3412
            qw121.qhit.net         513
            ot13.qhit.net         261
            daiwa365fx.daiwa.co.jp         127
            fx.daiwa.co.jp         50
            mobile.daiwa.jp         50
            daiwacfd.daiwa.co.jp         2
2010/08/02         mobile.daiwa.co.jp         8205
            fx.daiwa.co.jp         1825
            ot13.qhit.net         1461
            qw121.qhit.net         923
            daiwa365fx.daiwa.co.jp         440
            mobile.daiwa.jp         148
            daiwacfd.daiwa.co.jp         1
2010/08/03         mobile.daiwa.co.jp         8728
            fx.daiwa.co.jp         1506
            daiwa365fx.daiwa.co.jp         1469
            ot13.qhit.net         1427
            qw121.qhit.net         795
            mobile.daiwa.jp         126

想得到结果,文件3
                                                          文件1        文件2        合计
2010/08/01          mobile.daiwa.co.jp          15715        3412        19127
            qw121.qhit.net         17189        513        17702
            ot13.qhit.net         6514        261        6775
            daiwa365fx.daiwa.co.jp         0        127        127
            fx.daiwa.co.jp         0        50        50
            mobile.daiwa.jp         982        50        1032
            daiwacfd.daiwa.co.jp         0        2        2
2010/08/02         mobile.daiwa.co.jp         259344        8205        267549
            fx.daiwa.co.jp         0        1825        1825
            ot13.qhit.net         187007        1461        188468
            qw121.qhit.net         331485        923        332408
            daiwa365fx.daiwa.co.jp         0        440        440
            mobile.daiwa.jp         1400        148        1548
            daiwacfd.daiwa.co.jp         0        1        1
2010/08/03         mobile.daiwa.co.jp         286724        8728        295452
            fx.daiwa.co.jp         0        1506        1506
            daiwa365fx.daiwa.co.jp         0        1469        1469
            ot13.qhit.net         198367        1427        199794
            qw121.qhit.net         348013        795        348808
            mobile.daiwa.jp         2061        126        2187

论坛徽章:
0
2 [报告]
发表于 2010-08-16 17:51 |只看该作者
文件中间隔为tab格式比较不好看,各位海涵!!!!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2010-08-16 17:55 |只看该作者
join?

论坛徽章:
0
4 [报告]
发表于 2010-08-16 18:07 |只看该作者
看见这个就头晕

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
5 [报告]
发表于 2010-08-16 21:01 |只看该作者
  1. awk -F '\t' 'FNR==1{i++}/^[0-9]/{d=$1;a[d]++}{b[$2]++;c[d","$2","i]=$3}END{for(i in a){printf i;for(j in b){print "\t"j"\t"c[i","j","1]+0"\t"c[i","j","2]+0"\t"c[i","j","1]+c[i","j","2]}}}' file1 file2
复制代码
不想要 0 0 0 的数据,写个if过滤下就可以了。

论坛徽章:
0
6 [报告]
发表于 2010-08-16 21:18 |只看该作者
  1. awk '!NF{next}NF==3{d=$1;m[d]=d}{b[$(NF-1)]}NR==FNR{a1[d","$(NF-1)]=$NF}NR>FNR{a2[d","$(NF-1)]=$NF}END{for (i=1;i<=asort(m);i++) {printf m[i];for (j in b) printf "\t%s\t%d\t%d\t%d\n",j,a1[m[i]","j],a2[m[i]","j],a1[m[i]","j]+a2[m[i]","j]}}' file1 file2
复制代码

论坛徽章:
0
7 [报告]
发表于 2010-08-16 21:26 |只看该作者
回复 5# ly5066113


FNR==1{i++}
学习了,可以少建一个数组

论坛徽章:
0
8 [报告]
发表于 2010-08-16 21:29 |只看该作者
……

论坛徽章:
0
9 [报告]
发表于 2010-08-16 21:39 |只看该作者
ywlscpl 发表于 2010-08-16 21:18



   
谢谢受教了,顺便问一下这个asort是不是要gawk才行?
如果出输的结果想按最后一个合计排序怎么改呢?

论坛徽章:
0
10 [报告]
发表于 2010-08-16 21:41 |只看该作者
不想要 0 0 0 的数据,写个if过滤下就可以了。
ly5066113 发表于 2010-08-16 21:01



    不好意思,这个我这边运行结果差的比较多,能告诉一下awk的版本吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP