2015-07-20 73 views
0

即使存在多个不同的行,以下语句也只返回一行。获取独特/独特的值PSObject的某些属性?

import-csv $fname | select "C1", 'C2' | Get-Unique 

如何获得所选C1C2的真正独特的价值?

如果只选择一个属性,则可以通过-ExpandProperty来解决问题。我期望它返回与SQL语句select distinct C1, C2 from ....相同的结果。

+0

我认为你的意思是'-ExpandProperty'。你需要独特的价值为个人物产,或独特的组合? –

+0

正确。谢谢。 – ca9163d9

+0

我需要组合的唯一值。像SQL'从'中选择不同的C1,C2。 – ca9163d9

回答

4

您可以Group-Object实现这一点:如果你需要提取值

Import-Csv $fname | Group-Object -Property 'C1', 'C2' | Select-Object -ExpandProperty Name 

,由,分裂Name参数:

$Uniques = Import-Csv $fname | Group-Object -Property 'C1', 'C2' | ForEach-Object { 
    @($_.Name -Split ', ') 
} 

如果属性不是字符串,或者如果他们包含逗号,可以从每组中选择第一个对象:

$Uniques = Import-Csv $fname | Select-Object 'C1','C2' | Group-Object -Property 'C1', 'C2' | ForEach-Object { 
    $_.Group | Select-Object -First 1 
} 
+0

如果在”C1“或”C2“中有逗号,该怎么办? – ca9163d9

+0

@ dc7a9163d9请参阅更新答案 –