2015-07-20 3 views
0

Следующий оператор возвращает только одну строку, даже если имеется несколько различных строк.Получите уникальные/отличные значения некоторых свойств PSObjects?

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

Как получить реальные уникальные значения выбранного C1 и C2?

Проблема может быть решена -ExpandProperty, если выбрано только одно свойство. Я ожидаю, что он вернет тот же результат SQL-запроса select distinct C1, C2 from .....

+0

Я думаю, вы имеете в виду '-ExpandProperty'. Вам нужны уникальные значения для отдельных свойств или уникальные комбинации? –

+0

Исправить. Благодарю. – ca9163d9

+0

Мне нужны уникальные значения комбинаций. Подобно SQL 'select select C1, C2 from'. – 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 см. Ответ обновления –

Смежные вопросы