我一直在寻找在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
非常感谢任何帮助。
答案 0 :(得分:1)
Group-Object
和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