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

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

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 算个数 相同的算一个

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

在线等!!!!


后来通过问了大神得到的解决方法 但是我也不是特别看得懂,又看得懂的帮忙分析下么?前面部分基本就是将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
【热门文章】
【热门文章】