PowerShell将x行中的字符串组合成1行,用逗号分隔

时间:2014-09-04 21:30:15

标签: string powershell replace

我有下表(名称是一列,颜色是另一列):

  1. Bob green
  2. Bob red
  3. Frank blue
  4. Frank yellow
  5. 我需要像这样:

    1. Bob green,red
    2. Frank blue,yellow
    3. 我试图在PowerShell中使用group-object,但它只是给了我一个数组中的字段。基本上,我需要在第二列中抓取到达元素(按列1分组)并将它们作为一行添加到分隔符。

      必须有一种简单的方法来做到这一点,我不知道。

2 个答案:

答案 0 :(得分:1)

我会选择Group-Object。在这里借用mjolinor表,这是我生成相同结果的代码:

$table = @(
[PSCustomObject]@{Name='Bob';Color='Green'}
[PSCustomObject]@{Name='Bob';Color='Red'}
[PSCustomObject]@{Name='Frank';Color='Blue'}
[PSCustomObject]@{Name='Frank';Color='Yellow'}
)

$Table | Group Name | ForEach{$_.Name + " " + ($_.Group.Color -join ",")}

答案 1 :(得分:0)

我使用哈希表:

$table = @(
[PSCustomObject]@{Name='Bob';Color='Green'}
[PSCustomObject]@{Name='Bob';Color='Red'}
[PSCustomObject]@{Name='Frank';Color='Blue'}
[PSCustomObject]@{Name='Frank';Color='Yellow'}
)

$ht = @{}

$Table | 
 foreach { $ht[$_.Name] += @($_.Color) }

 $ht.GetEnumerator() |
  foreach {'{0} {1}' -f $_.Name,($_.Value -join ',') }

Bob Green,Red
Frank Blue,Yellow