从CSV合并列

时间:2015-04-27 14:35:01

标签: powershell csv

我有这样的CSV:

Group;Name;Color
Fruit;Apple;green
Vegetable;Carrot;orange
Fruit;Banana;yellow
Fruit;cherry;red
Vegetable;cucumber;green

并希望将其合并(通过PowerShell),以便每个组只出现一次,并在数组(?)旁边显示相应的“名称”,如下所示:

Group;Name;color
Fruit;{Apple,Banana,Cherry};{green,yellow,red}
Vegetable;{Carrot;cucumber};{orange,green}

1 个答案:

答案 0 :(得分:2)

使用Group-Object按对象属性对对象进行分组:

Import-Csv 'C:\path\to\input.csv' -Delimiter ';' |
  Group-Object Group |
  select @{n='Group';e={$_.Name}},
         @{n='Name';e={'{{{0}}}' -f ($_.Group.Name -join ',')}},
         @{n='Color';e={'{{{0}}}' -f ($_.Group.Color -join ',')}} |
  Export-Csv 'C:\path\to\output.csv' -NoType -Delimiter ';'