Назад | Перейти на главную страницу

Как я могу подсчитать количество совпадений регулярного выражения в файле журнала с помощью PowerShell?

У меня очень большой файл журнала, в котором мне нужно подсчитать количество вхождений всех вариантов конкретной строки; то есть:

Существует большое количество идентификаторов файлов, которые отображаются в формате AA000 ####. Мне нужно выяснить, какие пять или десять идентификаторов находятся в этом файле (какие из них появляются чаще всего).

Я полагаю, это можно сделать с помощью строки выбора и регулярных выражений?

Если вы хотите выделить только часть заголовка (что, я предполагаю, вы это делаете), а не группировать на основе всего URL-адреса (который может содержать информацию, относящуюся к этому посещению), вам необходимо получить значение параметра заголовка следующим образом:

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

Это не в моей голове, но вы сможете сделать это с помощью однострочника.

Вы можете вставить его в переменную и получить длину этой переменной так:

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

Или мы можем просто сделать все это в строке, используя скобки:

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

Вы можете рассчитывать максимум с помощью командлета group-object.

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

Сейчас это довольно некрасиво, но вы сможете продолжить