Como grep número de ocorrência de duas palavras diferentes em um arquivo no Linux?

0

Como grep nero de ocorrcia de duas palavras diferentes, e. 'register' e 'evn' em um arquivo no Linux?

A saída deve ser como segue:

registered:20
    
por Supriya 09.01.2013 / 11:34

5 respostas

5

No caso de formato de saída invertida (contar primeiro, palavra após) também é aceitável, isso também acontece e é fácil adicionar mais palavras:

tr -c '[:alpha:]' '\n' < /path/to/file | sort | uniq -c | grep -w 'register\|evn'
  • Conta a ocorrência de cada palavra, mesmo que haja várias ocorrências na mesma linha.
  • Conta as correspondências exatas das palavras, sem incluir as variantes com sufixo.
por 09.01.2013 / 12:35
4

Use awk

awk '/register/ {r++} /evn/ {e++} END {printf("register:%d\nevn:%d\n", r, e)}' /path/to/file 
    
por 09.01.2013 / 12:30
3

Você pode calcular separadamente:

$ word=register; count='grep -o $word /path/to/file| wc -l'; echo $word:$count
$ word=evn; count='grep -o $word /path/to/file| wc -l'; echo $word:$count
    
por 09.01.2013 / 11:39
1

arquivo de exemplo ./filename :

registering evn register evn
evn register evn.register. register.evn evn evn register. 
evn register-evnt register

comando:

echo register:$(grep -oP "(^|\s)\Kregister(?=\s|$)|(^|\s)\Kregister\.(?=\s|$)" ./filename | wc -l) && echo evn:$(grep -oP '(^|\s)\Kevn(?=\s|$)|(^|\s)\Kevn\.(?=\s|$)' ./filename | wc -l)

exemplo de saída:

register:4
evn:6

Isso deve contar com precisão apenas as palavras "register" e "evn", omitindo ocorrências de palavras que contenham "register" e ou "evn", como "register", "evnt" ou "register-evn", por exemplo.

Isso pressupõe que não há caracteres especiais como traços imediatamente após uma ou outra palavra, mas irá incluir essas palavras se elas forem seguidas por um período no final de uma linha ou sentença.

Essa resposta vinculada me forneceu as informações necessárias para a sintaxe do grep.

    
por 16.10.2017 / 16:34
-1
word="registered"
echo $word:$( grep -wc $word /path/to/file )

Funciona com Bash / Ksh e GNU grep

    
por 09.01.2013 / 23:21

Tags