Powershell 在第 2 列中将类似的行一起添加值

Powershell add like rows together value in column 2

我一直在寻找一种在 PowerShell 中执行此操作的方法,但一直没有成功。我有一个看起来像这样的文件。

Column1,column2
A,1
B,2
C,3
D,4
A,2
B,3
D,6
A,3
C,2

我想找到一种方法来对这个文件进行排序并添加 column2,最后得到一个看起来像这样的文件。

column1,column2
A,6
B,5
C,5
D,10

如有任何帮助,我们将不胜感激。

Group-Object and Measure-Object 的组合将为您完成此操作。如果您有 PowerShell 3.0 或更高版本...

Import-Csv c:\temp\test.csv | Group-Object Column1 | ForEach-Object{
    [pscustomobject][ordered]@{
        Column1 = $_.Name
        Column2 =  $_.Group.Column2 | Measure-Object -Sum | Select-Object -ExpandProperty Sum
    }
} | Export-Csv -NoTypeInformation C:\temp\testOutput.csv

如果您对这些 cmdlet 中的任何一个有疑问,请查阅文档或调试我的脚本以查看它在做什么。

也可以使用具有相似逻辑和相同输出的计算属性。应该也适用于较低的 PowerShell 版本。

Import-Csv c:\temp\test.csv | 
    Group-Object Column1 | 
    Select @{Label="Column1";Expression={$_.Name}},@{Label="Column2";Expression={$_.Group.Column2 | Measure-Object -Sum | Select-Object -ExpandProperty Sum}} |
    Export-Csv -NoTypeInformation C:\temp\testOutput.csv