我很难描述我在标题中需要什么,所以如果这完全没有意义,我提前道歉。
如果我有一个包含2个列的CSV,一个带有人名,另一个带有数字值,我需要在名称列中找到重复项,然后将该人的数值加在一起以获得总数在新的CSV中。
这是真实CSV的非常简化版本
Name,Number
Dog,1
Cat,2
Fish,1
Dog,3
Dog,2
Cat,2
Fish,1
鉴于上述信息,我希望能够产生的是:
Name,Number
Dog,6
Cat,4
Fish,2
我真的不知道如何到达那里,或者是否可以使用PowerShell。我只能使用group-object按名称进行分组,但我不知道如何在此之后添加列。
我在研究这个问题时遇到的最大问题是,谷歌搜索时获得的大部分结果都涉及到向csv添加新列而不执行数学计算。
答案 0 :(得分:5)
我终于明白了
$csvfile = import-csv c:\csvfile.csv
$csvfile | group name | select name,@{Name="Totals";Expression={($_.group | Measure-Object -sum number).sum}}
归功于:
http://www.hanselman.com/blog/ParsingCSVsAndPoorMansWebLogAnalysisWithPowerShell.aspx