Precisa de uma mão com um comando de palavra grep

2

Apenas pegando o jeito do Linux Command Line, mas tendo problemas com os comandos do grep.

Estou tentando descobrir quantas vezes uma palavra aparece nas últimas 1000 linhas de um arquivo de texto

Tenho a sensação de que preciso usar grep e pipes, mas não consigo descobrir

    
por 6rxobrut 18.03.2015 / 13:12

2 respostas

5

Se você não quiser contar o número de ocorrências, mas o número de linhas correspondentes, use a resposta de @ heemayl. No entanto, se você quiser contar cada ocorrência (portanto, conte word foo word como 2 ocorrências, não uma), você pode fazer:

tail -1000 file | grep -o word | wc -l

O comando tail imprime as últimas 1000 linhas, o grep -o word procura word e imprime cada caso encontrado (assim, ele será impresso duas vezes se corresponder a duas) e wc -l contará o número de linhas retornadas .

Como alternativa, você pode usar algo como perl para fazer a contagem:

tail -n 1000 file | perl -alne '$k+=grep{/word/} @F; END{print $k}'  

Por fim, observe que isso também contará coisas como wordsmith . Para corresponder apenas se seu padrão formar uma palavra inteira, use grep com o sinal -w :

tail -1000 file | grep -wo word | wc -l

ou

tail -n 1000 file | perl -alne '$k+=grep{/\bword\b/} @F; END{print $k}'
    
por terdon 18.03.2015 / 13:31
2

Aqui está um padrão geral:

tail -1000 file.txt | grep -c "word"

Isso imprimirá o número de linhas que contêm o padrão "word" nas últimas 1000 linhas do arquivo denominado file.txt . Aqui usamos tail -1000 para obter as últimas 1000 linhas do arquivo e depois usamos grep -c para contar as ocorrências do padrão nessas linhas.

    
por heemayl 18.03.2015 / 13:14