4

我很难在标题中描述我需​​要什么,所以如果这完全没有意义,我提前道歉。

如果我有一个包含 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 添加新列而不执行数学计算。

4

1 回答 1

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

于 2012-07-20T21:36:47.077 回答