计算字符串的出现次数并将大文件中的下一个逗号值相加

时间:2014-10-21 19:29:45

标签: unix csv grep

我有一个包含逗号分隔值的大型数据文件。 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

感谢您的帮助。

1 个答案:

答案 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