Usando o 'grep' e outros utilitários

2

Eu sei que esta é uma questão aparentemente peculiar, mas eu quero ter uma melhor compreensão do uso de utilitários Linux, então eu vou pedir algo que me parece bastante complicado para entender melhor os mecanismos de trabalho.

Considerando todos os arquivos de cabeçalho em nosso sistema, como posso exibir no terminal uma lista classificada desses arquivos com base no número de macros definidas neles?

    
por user43389 09.01.2015 / 00:45

1 resposta

6

Isso deve funcionar:

for file in $(find /usr/include/ -name '*.h'); do
  echo "$file,$(grep -c '#define' $file)"; done \
  | sort -n -k2 -t, -r
  • Localize a lista de todos os arquivos que correspondem ao /usr/include/*.h pattern
  • Imprima o nome do arquivo, a vírgula e o número de linhas que correspondem ao padrão "#define"
  • Classifique numericamente, usando uma vírgula como um delimitador pelo segundo campo (ordem inversa).

Você pode anexar | head -10 para obter os 10 principais arquivos.

    
por Marcin Kaminski 09.01.2015 / 00:56