user@lpi:~$ linux-essentials
Início / Tópico 3 · As maravilhas da linha de comando / 3.2

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".