Existe uma maneira de eu fazer uma recursividade de todos os arquivos no diretório atual para encontrar um padrão e, em seguida, imprimi-lo na ordem de alto para baixo?

3

Até agora, o código é assim:

grep -rc 'Author' $1

Ele imprime todos os arquivos no diretório, o que é considerado um argumento. No entanto, como eu classificaria a saída (por exemplo):

 - data1:43 
 - data2:56
 - data3:14

em uma lista alta para baixa:

 - data2:56
 - data1:43
 - data3:14
    
por tom 10.02.2016 / 20:46

2 respostas

3

grep -rc 'Author' $1 | sort -t : -k 2,2n

é bom se você quiser o número de linhas que contenham a palavra-chave, independentemente de quantas vezes ela se repete em qualquer linha. Se você quiser a contagem real de palavras, você deve usar este

echo $1:$(grep -o 'Author' $1|wc -l) | sort -t : -k 2,2n
A opção

-o para o grep provavelmente está disponível na versão gnu do grep. Se você estiver usando o grep, fornecido por um sistema legado mais antigo, talvez ele não esteja disponível. Apenas um rápido heads-up.

    
por 10.02.2016 / 21:21
3

Para classificar do maior para o menor:

grep -rc 'Author' $1 | sort -r -t ':' -k2,2n
  • -r ordena em ordem inversa, ou seja, do maior para o menor.
  • -t apresenta o separador.
  • -k introduz os campos pelos quais classificar. Os campos são separados pelo separador definido por -t . Essa sintaxe significa classificar por todos os campos entre 2 e 2 (apenas o segundo campo). O n significa usar valores numéricos em vez de ordem lexicográfica (de modo que, por exemplo, 10 seja após 9 , não apenas após 1 ).
por 10.02.2016 / 21:38