如何使用 PowerShell 计算日志文件中正则表达式匹配的实例?

如何使用 PowerShell 计算日志文件中正则表达式匹配的实例?

我有一个非常大的日志文件,其中我需要计算特定字符串的所有变体的出现次数;即:

有大量文件 ID 以 AA000#### 格式出现。我必须找出此文件中排名前五或前十的 ID(哪些 ID 出现的次数最多)。

我认为这可以通过选择字符串和正则表达式来完成?

答案1

如果您只想提取标题部分(我猜您会这么做)而不是基于整个 URL 进行分组(其中可能包含特定于该访问的信息),您需要获取标题参数的值,如下所示:

get-content "test.txt" | % {if($_ -match 'title=([^\&]+)') {$($Matches[1])}} | group | sort -desc Count

答案2

这是我突然想到的,但你应该能够用一行代码来做到这一点。

您可以将其放入变量中并获取该变量的长度,如下所示:

$count = get-content .\test.txt | select-string -pattern "AA000"
$count.length

或者我们可以通过使用括号来内联完成所有操作:

(get-content .\test.txt | select-string -pattern "AA000").length

您可以使用 group-object cmdlet 进行顶部计数。

get-content .\test.txt | group-object | export-csv out.csv

目前情况很糟糕,但你应该可以从那里开始

相关内容