web-dev-qa-db-ja.com

PowerShellを使用してログファイル内の正規表現一致のインスタンスをカウントするにはどうすればよいですか?

特定の文字列のすべてのバリエーションの発生をカウントする必要がある非常に大きなログファイルがあります。あれは:

AA000 ####の形式で表示されるファイルIDは多数あります。このファイルの上位5つまたは10のID(最も頻繁に表示されるID)を確認する必要があります。

これはselect-stringと正規表現で実行できると思いますか?

3
Doug Chase

URL全体(その訪問に固有の情報が含まれている可能性があります)に基づいてグループ化せずに、タイトル部分(私が推測している)だけを分割したい場合は、次のようにtitleパラメーターの値を取得する必要があります。

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

これは私の頭から離れていますが、ワンライナーでこれを行うことができるはずです。

次のように、変数に押し込んでその変数の長さを取得することができます。

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

または、parensを使用して、すべてインラインで実行できます。

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

Group-objectコマンドレットを使用してトップカウントを行うことができます。

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

今はかなり醜いですが、そこから行けるはずです

2
Zypher