Rob*_*bin 2 powershell object count
我目前正在寻找一种方法来计算相等的正则表达式匹配并将它们输出到表或类似的东西中。
我的正则表达式如下所示:
$regex = "\A[[]{1}[0-9]{2}[.]{1}[0-9]{2}[.]{1}[0-9]{2}[,]{1}\s[0-9]{2}[:]{1}"
Run Code Online (Sandbox Code Playgroud)
我的 Powershell 代码目前如下所示,仅输出脚本找到的所有匹配项。
((Select-String $content -Pattern $regex -AllMatches).Matches).value
Run Code Online (Sandbox Code Playgroud)
脚本给我的输出看起来像这样(缩短):
[02.12.21, 11:
[02.12.21, 11:
[02.12.21, 11:
[02.12.21, 13:
[02.12.21, 13:
[02.12.21, 13:
[02.12.21, 13:
[02.12.21, 13:
[02.12.21, 13:
[02.12.21, 13:
Run Code Online (Sandbox Code Playgroud)
我想输出类似这样的东西:
[02.12.21, 11: (3 times)
[02.12.21, 13: (7 times)
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?
提前致谢!
正如评论中所述,您可以使用Group-Object:
$matchValues = @(
'[02.12.21, 11:'
'[02.12.21, 11:'
'[02.12.21, 11:'
'[02.12.21, 13:'
'[02.12.21, 13:'
'[02.12.21, 13:'
'[02.12.21, 13:'
'[02.12.21, 13:'
'[02.12.21, 13:'
'[02.12.21, 13:'
)
$matchValues | Group-Object | ForEach-Object { '{0} ({1} times)' -f $_.Name, $_.Count }
Run Code Online (Sandbox Code Playgroud)
输出:
[02.12.21, 11: (3 times)
[02.12.21, 13: (7 times)
Run Code Online (Sandbox Code Playgroud)
每个组对象的Name属性都包含唯一值,而其Count属性则为您提供该值的实例数。
最后,您可以使用格式运算符 -f来生成所需的输出。