我在 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
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
如果输入如下:
$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