Comando Grep: Aprenda com 20 exemplos práticos

Compartilhe:

Tela de um computador exibindo buscas feitas utilizando o comando grep

Precisa encontrar uma informação específica em arquivos de log ou em grandes volumes de texto, mas não sabe por onde começar ?

É nesse cenário que o comando grep se destaca, com ele você pode localizar palavras, expressões e padrões em segundos, tornando a análise de logs e fluxo de textos muito mais rápida.

Neste guia completo, você aprenderá a instalar o grep, entender seu funcionamento e realizar buscas com 20 exemplos práticos, que ajudarão a encontrar as informações que precisa com mais agilidade no linux.

Entendendo o comando grep

O grep (sigla para Global Regular Expression Print) é um comando que procura em arquivos ou fluxo de textos linhas que correspondam a um padrão de busca. Esses padrões podem ser uma string (cadeia de caracteres) ou expressões regulares.

Ao encontrar o padrão pesquisado em uma linha, o comando grep copia a linha para a saída padrão (o padrão é a tela) ou para outra saída que você tenha especificado.

Na grande maioria das distribuições Linux, a ferramenta já vem instalada por padrão. No entanto, caso precise instalá-la, utilize os comandos abaixo conforme sua distribuição:

Para instalar no Debian/Ubuntu e derivados:

Para instalar no Red Hat / AlmaLinux / Rocky Linux / Fedora:

Como usar o comando grep ?

O programa grep é utilizado na interface de linha de comando, e para tirar o máximo de proveito é necessário saber sua sintaxe, que é:

Explicação:

grep – Comando que faz a busca.

opções – Flags passadas para o comando grep que modificam seu comportamento.

padrão_de_busca – Informação que deve ser pesquisada no aquivo ou fluxo de texto.

arquivo – Localização do arquivo onde será feita a busca pelo grep linux.

Para tirar o máximo proveito nas buscas, você pode combinar opções. A tabela abaixo resume as flags mais utilizadas no grep linux:

OpçãoDescriçãoExemplo de uso
-r ou -RBusca recursiva em todos os diretórios.grep -r “root” /etc
-cMostra a quantidade total de linhas que coincidem com o padrão.grep -c “404” access.log
-lExibe apenas os nomes dos arquivos que contêm o termo buscado.grep -l “DB_PASS” .env
-EAtiva expressões regulares estendidas.grep -E ‘[0-9]{2}’ telefones.txt
-nExibe o número da linha correspondente no arquivo.grep -n “db_function” index.py
-iIgnora a diferença entre maiúsculas e minúsculas (case-insensitive).grep -i “failed” system.log

Se você deseja aprofundar suas habilidades no terminal e dominar outros utilitários essenciais, confira nosso guia completo sobre comandos Linux.

1. Localizando um termo simples em um arquivo

Buscar uma string exata em um arquivo específico é o uso mais básico e comum do grep. O exemplo a seguir mostra como pesquisar pela palavra “ERROR” no arquivo “/var/log/syslog“:

Uso prático: Ideal para investigar rapidamente se um serviço gerou logs de erro em específico no sistema.

2. Ignorando letras MAIÚSCULAS e minúsculas

No exemplo prático anterior foi feita uma busca pela palavra “ERROR”, mas nem toda aplicação gera a palavra somente em MAIÚSCULO, pode ser gerada assim “error”.

E como o grep é case-sensitive, ou seja, diferencia letras MAIÚSCULAS de minúsculas, você pode utilizar a opção “-i” do comando grep para buscar e encontrar variações da mesma string, como: “Error”, “error” ou “ERROR”, veja o exemplo a seguir:

Outro exemplo, encontrar o padrão de busca “warning” em letras minúsculas e MAIÚSCULAS.

Uso prático: A opção “-i” do grep é útil quando você não sabe exatamente como a aplicação formatou as mensagens de log.

3. Destacando o padrão de busca

As vezes existe muita informação em arquivos de logs do sistema que são retornados junto com o padrão de pesquisa, mas ao utilizar a opção “--color=auto” você realça o termo correspondente no terminal com cores.

A imagem acima destaca na cor vermelho a palavra “upgrade” que é o padrão de pesquisa passado para o grep.

2º Exemplo:destacar a palavra “denied” pesquisada nos logs do sistema e visualizar as tentativas de acesso negadas:

Uso prático: Melhora a visibilidade na análise visual dos logs do sistema.

4. Invertendo os resultados de uma busca

Para inverter a busca utilize a opção “-v”, assim, o grep exclui do resultado todas as linhas que contém o padrão de busca, é uma forma de você ocultar linhas indesejadas na análise.

Por exemplo, para excluir logs repetitivos da requisição “GET/status” em servidores web nginx, exibindo outras requisições.

Você pode utilizar a opção “-v” do comando grep para checar quantas contas de usuário podem utilizar o sistema com um shell válido.

Na prática, o comando filtra a saída removendo entradas que tem “nologin” e “false”.

5. Exibindo o número da linha nos resultados

Se trabalha desenvolvendo aplicações e precisa saber em qual linha do arquivo de configuração alterar uma variável, use a flag “-n” do grep, que inclui a numeração antes do conteúdo em cada linha que contém o padrão pesquisado.

6. Pesquisando recursivamente em múltiplos diretórios

A opção “-r” do comando grep faz a pesquisa percorrer a pasta atual e suas subpastas. O exemplo a seguir busca pela string “SQL syntax error” em todos os arquivos de “/var/log/apps” e em seus subdiretórios.

Outro exemplo, é pesquisar a palavra “failed” em todos os logs do sistema:

Uso prático: Útil quando os logs da aplicação são armazenados em arquivos que ficam em várias pastas.

7. Listando apenas os nomes dos arquivos encontrados

O comando grep tem a opção “-l” que omite o texto das linhas e exibe somente o caminho dos arquivos que contém o padrão de busca.

Por exemplo, ao trabalhar com servidores web apache ou nginx, você pode precisar localizar em quais Virtual Hosts contêm uma referência a um endereço IP.

A opção “-r” também é usada para fazer uma busca recursiva.

8. Contando o número total de ocorrências de um termo

Em vez de listar todo o texto, a opção “-c” do grep retorna apenas o número total de linhas encontradas. Caso queira saber se o kernel linux gerou registros com erros graves, execute:

Uso prático: Útil para métricas rápidas, por exemplo, saber a quantidade de falhas de login ou erros gerados por serviços do sistema.

Se quer visualizar somente a quantidade de contas de usuários com o login invalido “nologin” execute:

9. Buscando apenas por palavras completas

Ao utilizar o grep para pesquisar por “error” também é exibido “errors”, assim como, se for procurado pelo padrão “fail” pode ser mostrado “failed”. Isso acontece por que o padrão de busca existe na palavra.

Mas, caso queira filtrar exatamente pela palavra ou caractere especifico, utilize “-w” do comando grep, para evitar trazer palavras que apenas contêm o termo.

No exemplo a seguir é pesquisado exatamente por “http”, assim é removido outras linhas como “https”.

A imagem acima mostra a pesquisa com e sem a opção “-w” do grep.

Outra forma prática de usar é pesquisar no arquivo “/etc/fstab” qual dispositivo armazena o conteúdo do diretório “/” do linux, execute:

Uso prático: A opção “-w” é bem útil para evitar exibir termos semelhantes em arquivos do sistema.

10. Filtrando fluxo de informação com Pipe “|”

Outro uso comum é enviar um fluxo de dados através do caractere “|PIPE para entrada padrão do comando grep, que faz a filtragem pela informação buscada.

Uso prático: Utilizado por administradores de sistemas para verificar se um processo específico está em execução.

11. Exibindo linhas antes da correspondência (Before)

O comando grep tem a opção “-B” (before) que recebe como valor a quantidade de linhas que será exibida antes do padrão de pesquisa que foi encontrado.

Essa opção é útil para analisar logs do sistema, você pode precisar buscar por uma informação específica mas também precisa visualizar os registros que vêm antes.

Exemplo, ao usar “-B 3” vai mostrar a linha encontrada e as 3 linhas anteriores a ela no arquivo.

Uso prático: Ajuda a entender o contexto e os eventos que antecederam um registro que contém o padrão de pesquisa.

12. Exibindo linhas após a correspondência (After)

Você pode querer visualizar as linhas que vêm após o padrão que está buscando nos logs, para isso utilize a opção “-A” (after) do grep. Por exemplo, ao analisar os logs usando o comando journalctl filtre as 5 linhas seguintes ao termo pesquisado.

Foi utilizado o caractere “\” (barra invertida) para ser ignorado os colchetes, assim buscando “[sda]”, se não fosse utilizado a “\” o padrão de busca seria “s” ou “d” ou “a”.

13. Exibindo linhas ao redor do padrão de busca (Context)

Você pode substituir o uso conjunto das opções “-A” e “-B” por “-C” que exibe o número de linhas antes e depois do padrão buscado pelo grep.

Exemplo prático, pesquise por “failed” em “/var/log/auth.log” e utilize “-C 2” para combinar o comportamento das opções “-A” e “-B”, mostrando 2 linhas acima e 2 linhas abaixo.

Uso prático: Fornece um panorama completo no momento exato em que houve falha na autenticação.

14. Pesquisando utilizando expressões regulares

Para usar regex (expressão regular) com o comando grep para fazer filtros avançados, utilize a opção “-E”, incluindo o uso do operador OR “|” (PIPE) para pesquisar mais de um termo simultaneamente.

Para buscar por “error” ou “warning” ou “fail” no arquivo de log do kernel, e ao mesmo tempo ignorar o case-sensitive, execute o comando:

Outro exemplo prático é buscar nos logs de acesso do serviço nginx, registros com código http “404” ou “500” ou “502”.

Uso prático: Permite rastrear registros de erros diferentes na aplicação utilizando uma única linha de código.

15. Removendo linhas em branco e comentários de um arquivo

É possível combinar a opção “-v” com expressões regulares para limpar a visualização de um arquivo de configuração. No exemplo a seguir é removido da visualização as linhas que iniciam com o caractere “#” (cerquilha) ou linhas em branco (^$).

Uso prático: Facilita a leitura das configurações ativas do serviço, ignorando linhas vazias e comentários.

16. Buscando em linhas que iniciam com um termo específico

Usando o caractere de âncora “^” (circunflexo), o filtro valida apenas o padrão pesquisado no começo da linha. Por exemplo, para saber se a configuração que autoriza login de root pelo ssh está comentada ou não:

Se aparecer algum resultado na tela, significa que a configuração “PermitRootLogin” do ssh não está comentada e foi configurada.

Uso prático: usado para verificar rapidamente se existe uma configuração com o termo específico que não está comentada.

17. Como pesquisar linhas que terminam com um termo específico

O caractere “$” indica que a busca deve corresponder ao final exato da linha, por exemplo, para buscar somente por contas de usuários que usam o shell bash, execute:

Uso prático: Identifica quais usuários do sistema possuem o shell /bin/bash atribuído.

18. Buscando termos em arquivos compactados

Para trabalhar com arquivos comprimidos pelo gzip, utiliza-se a variante do grep chamada “zgrep” com a mesma sintaxe. Exemplo, para buscar o termo “timeout” no arquivo de log comprimido “syslog2.gz”:

Outra forma, é descomprimir o arquivo e enviar para saída padrão os registros e utilizar o “|” (PIPE) para enviar para entrada do comando grep:

Uso prático: Permite investigar em arquivos de log antigos rotacionados sem a necessidade de descompactá-los em um novo arquivo.

19. Limitando o número de resultados retornados

Para limitar a quantidade de resultados encontrados do padrão pesquisado utilize a opção “-m” do grep, por exemplo, com “-m 2” o comando encerra a busca assim que encontra as 2 primeiras correspondências (no exemplo: 404).

Uso prático: Evita sobrecarregar o terminal quando você busca em arquivos gigantescos e precisa apenas de uma amostra rápida.

20. Pesquisando em arquivos com extensões específicas

Combinando as opções “-r” com “--include” você restringe a varredura recursiva apenas aos arquivos desejados. Por exemplo, caso queira verificar se os arquivos “.php” do wordpress contém algum código “eval(”.

Uso prático: Pode ser utilizado para varreduras de segurança em servidores web procurando por códigos ou scripts maliciosos.

Erros comuns e boas práticas ao usar o comando grep

Para evitar erros segue algumas dicas:

  • Utilize aspas em pesquisas em que o padrão de busca tem espaços, exemplo: grep “erro fatal” service.log.
  • Sempre rode o comando grep com usuário root ou com o comando sudo quando fizer buscas recursivas em diretórios administrativos, isso evitar erros de “Permissão negada”.

Entre as boas práticas é recomendado:

  • Usar o grep com comandos de paginação (less ou more) para buscas que podem retornar um resultado extenso.
  • Evite buscas recursivas profundas em horário de pico: Rodar “grep -r” em diretórios de armazenamento como “/var”, porque pode gerar consumo excessivo de I/O no disco e deixar o servidor lento.

Conclusão

Aprender a usar o comando grep é importante para filtrar informações através de shell script ou para analisar logs do sistema através da interface de linha de comando e solucionar problemas no servidor.

Pratique os exemplos apresentados e incorpore o grep linux na sua rotina diária, aos poucos, a combinação dessas opções se tornará um processo natural no seu fluxo de trabalho.

Para aprender mais sobre o grep recomendo a leitura da página de manual do projeto.

Ficou com alguma dúvida sobre os exemplos ou quer compartilhar uma dica extra ? Deixe seu comentário, sua participação é muito importante!

Perguntas Frequentes (FAQ) sobre o comando grep

Qual a diferença entre o comando grep e find ?

O comando grep faz pesquisas para encontrar padrões de busca em fluxo de texto ou arquivos. Já o comando find busca arquivos ou diretórios com base nos seus metadados (nomes, permissões, tamanho, data de modificação e etc).

O comando grep altera o arquivo original durante a busca ?

Não. O comando grep realiza apenas a leitura dos dados e exibe o resultado formatado no terminal, sem modificar o conteúdo do arquivo pesquisado.

Posso usar o grep no Windows ?

Sim. Você pode utilizar o utilitário através do WSL (Windows Subsystem for Linux) ou instalar a partir do Git Bash.

Como fazer o grep ignorar arquivos binários ?

Adicione a flag “-I” (I maiúsculo) ao comando. Isso instrui a ferramenta a ignorar processamento em arquivos binários, evitando que textos truncados poluam a saída do seu terminal.

Qual é a diferença entre o comando grep, egrep e fgrep ?

O grep padrão usa expressões regulares básicas. O egrep suporta expressões regulares estendidas (equivalente ao grep -E). O fgrep interpreta todos os caracteres como texto literal, desativando expressões regulares (equivalente ao grep -F).

Navegue por tópicos:

Foto de Edson Oliveira
Edson Oliveira

Especialista em Linux, trabalhando com TI tem experiência no gerenciamento, solução de problemas e suporte de servidores linux em ambientes corporativos.

Professor de cursos voltados a linux, tecnologias open source e certificações LPI. Possui as certificações LPIC-1, LPIC-2 e LPIC-3 (Mixed Environment).

Navegue por tópicos:

Você também pode gostar:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Valorizamos sua privacidade

Utilizamos cookies para aprimorar sua experiência de navegação, exibir anúncios ou conteúdo personalizado e analisar nosso tráfego. Ao clicar no botão “Aceitar todos”, você concorda com nosso uso de cookies.

Para mais informações leia nossa Política de Privacidade.