Powershell在第2列中添加了类似于行的值

时间:2015-02-18 20:49:18

标签: loops powershell csv sum

我一直在寻找在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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

Group-ObjectMeasure-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