在powershell中计算变量中某个值的出现次数

问题描述 投票:0回答:2

我在 powershell 中有一个简单的 for 循环 循环 json 响应

foreach ($myvar in $response) { 
    $getvalues = $myvar.acc_name
    Write-Host $getvalues
}

输出如下(每个变量在屏幕上换行):

abc
abc
www
abc
bbb
abc

我需要添加代码来计算变量的出现次数并显示输出,如下所示:

abc 4
www 1
bbb 1
powershell grouping
2个回答
1
投票

使用

Group-Object
cmdlet 将值分组在一起 - 结果输出将反映每个不同组的计数:

PS ~> $strings = -split 'abc abc www abc bbb abc'
PS ~> $strings |Group-Object -NoElement

Count Name
----- ----
    4 abc
    1 bbb
    1 www

Group-Object
还接受计算值进行比较:

PS ~> $strings = -split 'abc abc www abc bbb abc'
PS ~> $strings |Group-Object {$_[1] <# group only on second letter in each string#> } -NoElement

Count Name
----- ----
    5 b
    1 w

0
投票

如果输入如下:

$test = "abc
abc
www
abc
bbb
abc"

您可以拆分它:

$lines = $test -split "`n"

分组后:

$groupedLines = $lines | ForEach-Object { $_.Trim() } | Group-Object | ForEach-Object {
[PSCustomObject]@{
    Count = $_.Count
    Value = $_.Name
    }
}

输出:

Count Value
----- -----
4 abc
1 bbb
1 www

如果没有

ForEach-Object { $_.Trim() }
,您将得到以下输出:

Count Value
----- -----
1 abc
3 abc…
1 bbb…
1 www…

也许我有点过于复杂了:D

© www.soinside.com 2019 - 2024. All rights reserved.