Como contar as ocorrências da frase no grep, ignorando o caso?

3

Eu preciso procurar um nome nicolas bomber com grep . O nome também pode ser NiCoLaS BomBer . Eu preciso executar um arquivo .sh que exiba o número de ocorrências desse nome.

O comando que eu fiz é este:

grep -i "Nicolas \s*Bomber" annuaire | wc -l

mas não funciona.

Alguma sugestão?

    
por JohnnyOnPc 15.07.2016 / 11:35

1 resposta

9

O -o do grep só produzirá as correspondências, ignorando as linhas; wc pode contá-los:

grep -io "nicolas bomber" annuaire | wc -l

ou simplesmente,

grep -ioc "nicolas bomber" annuaire

Como você comentou, você pode combinar qualquer número de espaços em branco entre as palavras, usando a opção -z ,

grep -iz "nicolas[[:space:]]*bomber" annuaire | wc -l

De man grep

-i, --ignore-case
    Ignore case distinctions in both the PATTERN and the input files.  (-i is specified by POSIX.)    

-o, --only-matching
    Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

-c, --count
    Suppress  normal  output;  instead  print  a  count  of  matching  lines  for each input file.

Alternativamente, se você quiser pesquisar a string em uma extensão de arquivo específica, por exemplo, digamos todos os arquivos *.txt , você pode usar:

grep -R --include='*.txt' -ioc "nicolas bomber" .
    
por 15.07.2016 / 11:39

Tags