3.2 — Pesquisando e extraindo dados: grep, pipes, redirecionamento, regex básicaTópico 3: As maravilhas da linha de comandopeso 3
O que você precisa entender
Esse é um dos subtópicos mais práticos e mais cobrados da prova inteira. É sobre combinar comandos pra filtrar e transformar dados.
Redirecionamento
| Símbolo | Significa |
|---|---|
> |
Redireciona saída para um arquivo (sobrescreve) |
>> |
Redireciona saída para um arquivo (adiciona ao final) |
< |
Usa um arquivo como entrada de um comando |
2> |
Redireciona apenas erros (stderr) |
&> |
Redireciona saída E erros juntos |
Pipe (|)
Envia a saída de um comando como entrada do próximo. É a base de tudo em Linux: comando1 | comando2 | comando3.
grep — buscar texto
| Opção | Efeito |
|---|---|
-i |
Ignora maiúsculas/minúsculas |
-v |
Inverte (mostra linhas que NÃO batem) |
-r |
Busca recursiva em diretórios |
-n |
Mostra o número da linha |
-c |
Conta quantas linhas batem (não mostra o conteúdo) |
-E |
Usa regex estendida (permite +, ?, | sem escapar) |
Regex básica (o suficiente pra prova)
| Símbolo | Significa |
|---|---|
. |
Qualquer caractere |
* |
Zero ou mais repetições do anterior |
^ |
Início da linha |
$ |
Fim da linha |
[abc] |
Qualquer um dos caracteres a, b ou c |
[^abc] |
Qualquer caractere QUE NÃO seja a, b ou c |
Comandos para testar
# 1. Redirecionar a saída de um comando para um arquivo
ls -la > lista.txt
# 2. Adicionar mais conteúdo ao mesmo arquivo (sem apagar o que já tem)
echo "linha extra" >> lista.txt
# 3. Usar pipe para contar quantos processos estão rodando
ps aux | wc -l
# 4. Buscar uma palavra em um arquivo, ignorando maiúsculas/minúsculas
grep -i "root" /etc/passwd
# 5. Combinar pipe + grep + ordenação
cat /etc/passwd | grep "bash" | sort
Outros comandos que aparecem junto com grep (bom conhecer)
# cut: extrai colunas separadas por um delimitador
cut -d: -f1 /etc/passwd # pega só a 1ª coluna (nome de usuário)
# sort: ordena linhas
sort arquivo.txt
sort -r arquivo.txt # ordem reversa
sort -n arquivo.txt # ordem numérica
# wc: conta linhas, palavras, caracteres
wc -l arquivo.txt # só linhas
# head e tail: primeiras/últimas linhas
head -5 arquivo.txt
tail -5 arquivo.txt
tail -f /var/log/syslog # acompanha o arquivo em tempo real (-f = follow)
📌 Exercício prático
No arquivo /etc/passwd, use um pipe para: (1) extrair só os nomes de usuário com cut, (2) ordenar alfabeticamente com sort, e (3) salvar o resultado em um arquivo chamado usuarios-ordenados.txt usando >. Depois, use grep -c para contar quantas linhas desse arquivo contêm a letra "a".