- Published on
Filtros de Conteúdo no Linux, grep e egrep
- Authors
- Name
- Rodrigo Peixoto
grep
, egrep
e Suas Possibilidades
🔍 Filtros de Conteúdo no Linux: Os comandos grep
e egrep
são ferramentas poderosas de filtro de conteúdo, muito utilizados em análise de logs, buscas em arquivos, e automação de tarefas.
grep
– Global Regular Expression Print
📌 1. 🔧 Sintaxe Básica:
grep [opções] 'padrão' arquivo
✅ Exemplos:
grep "erro" log.txt # Busca linhas que contenham a palavra "erro"
grep -i "erro" log.txt # Busca sem diferenciar maiúsculas e minúsculas
grep -n "erro" log.txt # Mostra o número da linha
grep -r "falha" /var/log # Busca recursiva em diretórios
🔍 Principais Opções:
Opção | Descrição |
---|---|
-i | Ignora letras maiúsculas/minúsculas (case insensitive) |
-v | Inverte o filtro: mostra linhas que não combinam com o padrão |
-n | Mostra o número da linha |
-r ou -R | Busca recursiva em diretórios |
-l | Mostra apenas os nomes dos arquivos que contêm o padrão |
-c | Conta o número de linhas que correspondem ao padrão |
-o | Mostra somente o trecho da linha que corresponde |
--color=auto | Realça o padrão encontrado com cor |
egrep
– Extended grep (grep com expressões regulares estendidas)
⚙️ 2. ⚠️ O
egrep
é equivalente agrep -E
. Ele aceita expressões regulares estendidas (ERE), como+
,?
,|
,()
**sem necessidade de escape com **.
🔧 Sintaxe:
egrep 'padrão' arquivo
grep -E 'padrão' arquivo # Equivalente
✅ Exemplos:
egrep 'erro|falha' log.txt # Busca linhas com "erro" OU "falha"
egrep 'usuario[0-9]+' usuarios.txt # Nomes como usuario1, usuario23 etc.
egrep '(sucesso|ok).*finalizado' log.txt # Combinação com agrupamento
🔣 3. Expressões Regulares Comuns
Padrão | Significado |
---|---|
. | Qualquer caractere |
* | Zero ou mais ocorrências do anterior |
+ | Uma ou mais ocorrências do anterior (em egrep ) |
? | Zero ou uma ocorrência (em egrep ) |
[] | Intervalo de caracteres ([a-z] , [0-9] ) |
^ | Início da linha |
$ | Final da linha |
` | ` |
() | Agrupamento (em egrep ) |
🧠 Exemplos Práticos Avançados
# Mostrar todas as linhas que começam com "Erro"
grep '^Erro' log.txt
# Mostrar todas as linhas que terminam com ponto final
grep '\.$' log.txt
# Buscar CPF (formato 000.000.000-00)
egrep '[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}' arquivo.txt
# Buscar e-mails
egrep '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,}' emails.txt
# Exibir linhas que NÃO contenham a palavra "OK"
grep -v "OK" status.txt
🔄 grep + outros comandos
Você pode usar grep
com pipes (|
) para filtrar saídas de outros comandos:
ps aux | grep apache # Processos com apache
dmesg | grep -i usb # Mensagens do kernel sobre USB
ls -l | grep '^d' # Apenas diretórios
🧰 Dica Extra: grep em tempo real
Use com tail -f
para monitoramento de logs:
tail -f /var/log/syslog | grep "fail"
🔄 grep vs egrep
Recurso | grep | egrep (grep -E ) |
---|---|---|
Regex padrão | BRE (Basic Regex) | ERE (Extended Regex) |
` | , +, ()` suportado | Com \ (escape) |
Descontinuado | Não | Sim, egrep pode ser obsoleto |
Recomendado | Sim, com -E | Use grep -E |
🧪 Teste rápido (sem criar arquivo)
echo -e "erro\nok\nfalha" | grep 'erro' # Filtra "erro"
echo -e "erro\nok\nfalha" | egrep 'erro|falha' # "erro" ou "falha"