我有几行数据或对象的变量结果($ 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
....
不确定可用的命令或过滤器(如上所述),以便我可以获取每个名称并仅输出名称的最大值?
答案 0 :(得分:3)
这应该可以解决问题:
PS> $result | Foreach {$ht=@{}} `
{if ($_.Value -gt $ht[$_.name].Value) {$ht[$_.Name]=$_}} `
{$ht.Values}
这实质上是使用Foreach-Object cmdlet的Begin / Process / End scriptblock参数将输入对象存储为基于密钥的最大值到哈希表中。
注意:在行继续符(`)之后注意多余的空格 - 不应该有任何空格。
答案 1 :(得分:3)
$ result |组名|选择名称,@ {n ='value'; e = {($ _。group | measure value -max).maximum}}