PS: фильтровать выбранные строки только с максимальными значениями в качестве вывода? - PullRequest
1 голос
/ 06 мая 2010

У меня есть переменная результатов ($ result) из нескольких строк данных или объектов, например:

PS> $result | ft -auto;
name   value
----   -----
a          1
a          2
b          30
b          20
....

что мне нужно, чтобы получить все строки имени и max (значения), как этот отфильтрованный вывод:

PS> $result | ? |ft -auto
name   value
----   -----
a          2
b          30
....

Не уверен, какая команда или фильтры доступны (как? В выше), чтобы я мог получить каждое имя и только максимальное значение для имени из?

Ответы [ 2 ]

3 голосов
/ 13 мая 2010

$ результат | название группы | выберите имя, @ {n = 'значение'; e = {($ _. группа | мера значения -max) .maximum}}

3 голосов
/ 06 мая 2010

Это должно сработать:

PS> $result | Foreach {$ht=@{}} `
                      {if ($_.Value -gt $ht[$_.name].Value) {$ht[$_.Name]=$_}} `
                      {$ht.Values}

Это, по сути, использование параметров блока скрипта Begin / Process / End командлета Foreach-Object для хранения входных объектов с максимальным значением на основе ключа в хеш-таблице.

Примечание: следите за лишними пробелами после символа продолжения строки (`) - их не должно быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...