cat tt.txt
00_01_100
00_02_102
01_01_02_123
00_01_111
01_01_02_85
00_02_3
... ....
这段文本, 以下划线为分割域, 最后一列为下载次数, 前面的各列组合在一起确定一个游戏, 想求出每个游戏下载次数之和, 如何办?
我能想到的办法:
awk 'BEGIN{ FS="_" } { idx=""; for(i=1; i先拼凑好数组下标, 然后再根据数组下标求和。 但是感觉如果这个文本的记录数很多的话, 速度就会很慢, 求其他的办法:
awk -F_ '{s=$0;gsub("_[0-9]+$","",s);a[s]+=$NF}END{for(i in a) print i, a[i]}' URFILE
awk -F"_" '{for(i=1;ised 's/_\([0-9]*\)$/\t\1/' 数据文件 | awk '{a[$1]+=$2}END{for(i in a)print i "\t" a[i]}'
perl -ne '/(.*)_(.*)/; $n{$1} += $2; END{foreach (keys %n) {print "$_ => $n{$_}\n"}}' urfile
sed 's/^\(.*\)_\([0-9]*\)$/\1\t\2/g' tt.txt|sort -k1n|awk '{a[$1]+=$2}END{for(i in a) print i,a[i]}'
都很妙, 除了awk的, 其他的我都看不懂, 留在这里学习一下
阅读(1584) | 评论(0) | 转发(0) |