连接CSV文件中的列

时间:2014-05-01 13:22:37

标签: powershell csv join

我有一个像这样的CSV文件:

Computer, App
PC1, Software1
PC1, Software2
PC1, Software3
PC2, Software1
PC2, Software4
PC2, Software5

我想要一个像这样的CSV文件:

Computer, Apps
PC1, Software1;Software2;Software3
PC2, Software1;Software4;Software5

我尝试使用PowerShell,它几乎让我在那里:

import-csv input.csv | group-object Computer

但它给了我计算机名称和一个包含计算机名称和应用程序的表格(这是我开始使用的)...有什么方法可以进一步打破它以获得实际的字符串?

2 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。您需要按Computer进行分组,然后加入论坛中的App值。

$a = Import-Csv .\mycsvfile.csv

$a |
Group-Object Computer |
Select-Object @{name="Computer";expression={$_.Name}}, @{name="Apps";expression={($_.Group | % { $_.App }) -join ';'}} |
Export-Csv .\mycsvfile.csv -NoTypeInformation

mycsvfile.csv

"Computer","Apps"
"PC1","Software1;Software2;Software3"
"PC2","Software1;Software4;Software5"

答案 1 :(得分:1)

另一种方式,只是为了变化:

Import-Csv .\input.csv |
    Group-Object Computer |
    % {[pscustomobject]@{ Computer = $_.Name; Apps = ($_.Group).App -join ';'}} |
    Export-Csv .\output.csv -NoTypeInformation

这需要PowerShell 3。