Como posso contar as ocorrências de uma correspondência de expressão regular em um arquivo de log usando o PowerShell?

3

Eu tenho um arquivo de log muito grande no qual preciso contar as ocorrências de todas as variações de uma string específica; isto é:

Há um grande número de IDs de arquivo que aparecem no formato AA000 ####. Eu tenho que descobrir quais são os cinco principais ou dez IDs neste arquivo (quais aparecem mais vezes).

Eu acho que isso pode ser feito com expressões regulares e de seqüência de caracteres selecionadas?

    
por Doug Chase 08.12.2011 / 18:51

2 respostas

4

Se você quiser dividir apenas a parte do título (que eu estou supondo que você faz) e não agrupar com base na URL inteira (que pode conter informações específicas para essa visita), você precisa obter o valor do parâmetro title assim:

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

Isso está fora de minha cabeça, mas você deve ser capaz de fazer isso com um one-liner.

Você pode empurrá-lo em uma variável e obter o comprimento dessa variável da seguinte forma:

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

Ou podemos fazer tudo em linha usando parênteses:

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

Você pode fazer a contagem superior com o cmdlet do objeto de grupo.

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

Isso é muito feio agora, mas você deve ser capaz de ir de lá

    
por 08.12.2011 / 19:24