awk中如何统计不同行中的同类数据?求大神指导呀!!!

发布于 2022-09-01 17:03:21 字数 1096 浏览 9 评论 0

ios|lmbang|6.9.3|1|2.00|2.00|0.00|2|133522
ios|lmbang|6.9.3|5|13.80|13.80|0.00|1|161276
ios|lmbang|6.9.3|1|10.00|0.00|10.00|1|175517
web|lmbang|1.0.0|1|117.00|117.00|0.00|1|178803
ios|lamall|1.8.0|1|19.00|29.00|10.00|1|242733
ios|wap|null|4|123.00|246.00|0.00|1|244348
ios|wap|null|5|39.00|39.00|0.00|1|244348
web|wapmall|null|5|36.00|49.00|0.00|1|247799
android|lmbang|6.9.1|1|113.20|120.00|0.00|1|261733
ios|lmbang|6.9.3|5|17.00|34.00|0.00|1|264705
ios|tlife|5.5.0|1|10.00|0.00|10.00|1|269060
ios|lmbang|6.9.3|5|9.90|9.90|0.00|1|291796
ios|wap|null|4|214.00|214.00|0.00|2|294220
ios|lmbang|6.9.2|1|9.90|9.90|0.00|1|306098
ios|lmbang|6.9.3|4|93.10|109.00|0.00|1|308258

将日志文件中前面四个(ios|lmbang|6.9.3|1)相同的行 将后面的数值相加!!!,如何做呢?

ios|lmbang|6.9.3|1|2.00|2.00|0.00|2|133522
ios|lmbang|6.9.3|5|13.80|13.80|0.00|1|161276
ios|lmbang|6.9.3|1|10.00|0.00|10.00|1|175517

类似这样,比如第一行和第三行的前面四个值相同就要得到:
ios|lmbang|6.9.3|1|12.00|2.00|0.00|3|2

最后一个值是userid 不同的userid 算个数 相同的算一个

这样能做到吗?有大神帮忙解决吗????

在线等!!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

所谓喜欢 2022-09-08 17:03:21

后来通过问了大神得到的解决方法 但是我也不是特别看得懂,又看得懂的帮忙分析下么?前面部分基本就是将5,6,7,8行进行相加,然后第9列去重
awk -F\| '{

        a[$1,$2,$3,$4]+=$5;
        b[$1,$2,$3,$4]+=$6;
        c[$1,$2,$3,$4]+=$7;
        e[$1,$2,$3,$4]+=$8;
        if(!uid[$1,$2,$3,$4,$9]++){
            num[$1,$2,$3,$4]++;
        }}END{
            for(i in a){
                split(i,d,SUBSEP);
                printf("%s|%s|%s|%s|%.2f|%.2f|%.2f|%.2f|%d\n",d[1],d[2],d[3],d[4],a[i],b[i],c[i],e[i],num[i])
            }
        }' filename.txt
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文