CMD Master
Voltar ao blog
Arnošt Havelka

Encadear grep, sort e wc num só comando

Conte linhas correspondentes e filtre uma lista ordenada combinando cat, grep, sort e wc.

Iniciar lição interativa
Encadear grep, sort e wc num só comando

Quando grep, sort e wc já fazem sentido, o trabalho real é combiná-los. Uma linha pode extrair erros de um registo e contá-los, ou ordenar uma lista de utilizadores e ficar só com os nomes correspondentes. Não há um comando especial de “ninja” — só pipes.

Contar linhas correspondentes

Leia o ficheiro, fique com o padrão, conte o que resta:

Experimente o comando

Filtre um ficheiro e depois conte ou ordene!

Montar o comando
cat
Terminal
~$cat data.log | grep 'ERROR' | wc -l
2

Quantas linhas ERROR?

Terminal
~$cat data.log | grep 'ERROR' | wc -l

grep sem wc continua a imprimir as linhas correspondentes. Acrescente wc -l quando só precisa do número.

Ordenar primeiro e depois filtrar

Por vezes a ordem importa antes de procurar. Ordene o ficheiro e depois fique com a linha que lhe interessa:

printf '%s\n' 'user: guest' 'user: root' 'user: admin' > logs.txt
cat logs.txt | sort | grep 'root'
Terminal
~$cat logs.txt | sort | grep 'root'

Leia da esquerda para a direita: produza linhas, transforme-as e depois fique com elas ou conte-as. Se um pipe parecer errado, execute cada peça sozinha até a saída corresponder ao que o comando seguinte espera.


Teste de conhecimentos

1 / 3

O que devolve cat data.log | grep 'ERROR' | wc -l?

Referências

Estes links de documentação trazem detalhes confiáveis sobre os comandos usados neste artigo.

A seguir

Como alterar o proprietário de arquivos com chown no Bash

Use chown para alterar o proprietário e o grupo de arquivos ou diretórios, confira o resultado e evite mudanças recursivas inseguras.