我有一个包含逗号分隔值的大型数据文件。 e.g。
Name1,Score1,Name2,Score2,Name3,Score3
Joe,.5,Sam,.2,Bob,.1
Bob,.3,Joe,.1
乔,.5
是否有一个简单的grep命令可以返回每个名称的出现次数和分数总和?
我已尝试以下方法来计算,但不确定如何获得分数总和。
grep string" file" | wc -1
e.g
预期结果:
乔,3,1.1 山姆,1,.2
鲍勃,2,.4
感谢您的帮助。
答案 0 :(得分:1)
file.txt的:
Name1, Score1, Name2, Score2, Name3, Score3 Joe, .5, Sam, .2, Bob, .1 Bob, .3, Joe, .1 Joe, .5
grep -oP '[\w][\w ]*, [0-9.]+' file.txt | awk -F, '{a[$1]+=$2; c[$1]++} END {for(i in a){print i", "c[i]", "a[i]}}'
输出:
Sam, 1, 0.2 Joe, 3, 1.1 Bob, 2, 0.4