我有一个非常大的日志文件,其中我需要计算特定字符串的所有变体的出现次数;即:
有大量文件 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
目前情况很糟糕,但你应该可以从那里开始