Como usar o comando grep no Linux (com exemplos) 

O comando grep, acrônimo para Global Regular Expression Print, busca linhas que contêm um padrão específico em um arquivo. Ele é muito útil para verificar rapidamente se determinado padrão está presente em um arquivo — o que é ótimo especialmente para itens grandes, como arquivos de registros.

Você pode adicionar várias opções para modificar o comportamento do comando para tarefas específicas, como pesquisa inversa e busca de múltiplas palavras-chave. Devido à sua flexibilidade, grep é uma ferramenta essencial para gerenciar seu servidor privado virtual (VPS) Linux.

E, se você não sabe por onde começar, este artigo vai explicar tudo sobre como usar o comando grep no Linux, incluindo sua sintaxe e opções. Você também vai aprender conhecer de suas aplicações práticas para gerenciar arquivos e o sistema operacional como um todo. Vamos lá? 

Sintaxe do comando Grep

A sintaxe básica do grep é a seguinte:

grep [opções] padrão [ARQUIVO] 

Aqui está a explicação do que cada elemento significa:

  • grep – o nome do utilitário.
  • opções (options) – argumentos que modificam o comportamento do comando grep.
  • padrão (pattern) – a palavra-chave que você deseja pesquisar.
  • arquivo (file) – o nome do arquivo cujo conteúdo você deseja pesquisar. 

Na seção seguinte, vamos explicar as opções mais usadas e alguns casos de uso no mundo real.

Leia o manual do grep para aprender mais sobre todas as opções. Alternativamente, confira este guia de utilidades na própria interface de linha de comando executando:

grep --help
guia do comando grep no terminal

Lembre-se de que você deve ter o privilégio de leitura para o arquivo que deseja verificar com grep. Leia nosso tutorial sobre o utilitário chmod para saber mais sobre permissões no Linux e como alterá-las.

Usando o comando grep no Linux

Nesta seção, vamos falar sobre os usos mais comuns do comando grep. Se você está usando um VPS, é possível executar o comando através de um cliente SSH como o PuTTY. Em desktops, abra o Terminal Linux pressionando Ctrl + Alt + T.

Busca básica

O uso mais básico do grep é para filtrar arquivos de texto, exibindo todas as linhas que contêm uma palavra específica. Para fazer isso, execute este comando sem uma opção, como no exemplo abaixo:

grep palavra-chave arquivo

Você também pode procurar em múltiplos arquivos simultaneamente, assim:

grep padrão arquivo1 arquivo2 arquivo3

Se você quiser usar uma frase como termo de pesquisa, coloque o padrão entre aspas. Por exemplo, este comando encontrará linhas contendo Linux distro no arquivo de exemplo hostinger.txt :

grep "Linux distro" hostinger.txt 
comando grep exibindo linhas de um arquivo

Note que a sintaxe só funciona se o arquivo em questão estiver dentro do seu diretório atual. Se ele estiver em outro local, você precisará especificar o caminho completo, assim:

grep padrão /caminho/para/o/arquivo.txt

Importante! Como o grep (assim como outros comandos Linux) é sensível a letras maiúsculas e minúsculas, preste atenção na capitalização no seu termo de busca e no nome do seu arquivo.

Pesquisa recursiva

Você pode pesquisar recursivamente todos os arquivos e subdiretórios dentro de uma pasta usando a opção -r. Aqui está a sintaxe:

grep -r palavra-chave caminho/para/uma/pasta

Por exemplo, temos um diretório tutorial/conteudo/linux  que contém duas pastas, chamadas comandos e  utilidades. Para procurar a palavra VPS em todos os arquivos dentro dessas pastas, basta executar o grep no caminho principal:

grep -r VPS tutorial/conteudo/linux

O comando grep listará as linhas contendo o termo VPS dentro de quaisquer arquivos e pastas dentro do diretório tutorial/conteudo/linux .

pesquisa recursiva em diferentes subdiretórios com o comando grep

Gere entradas ao redor da linha correspondente

O grep permite que você exiba linhas antes e depois da entrada correspondente para fornecer mais contexto. Para fazer isso, adicione as opções abaixo seguidas pelo número de linhas adjacentes que você deseja imprimir:

  • A – exibe as linhas abaixo da entrada correspondente.
  • B – exibe as linhas acima da entrada correspondente.
  • C – exibe linhas tanto acima quanto abaixo da entrada.

Por exemplo, execute o comando abaixo para gerar um resultado que exiba a linha abaixo do resultado desejado:

grep -A1 padrão arquivo
comando grep imprimindo linha após termo buscado

Pesquisa insensível a maiúsculas e minúsculas

Por padrão, o grep tratará termos com maiúsculas ou minúsculas como padrões diferentes. Por exemplo, você não pode pesquisar Grep e GREP usando a palavra-chave grep. Você pode desativar esse comportamento adicionando a opção -i:

grep -i palavra-chave arquivo

Por exemplo: se quisermos procurar pela palavra vps e ignorar distinções de maiúsculas e minúsculas, execute o seguinte comando:

grep -i vps hostinger.txt
comando grep com opção -i para ignorar diferença entre maiúsculas e minúsculas

Pesquisa invertida

Adicione a opção -v ao seu comando grep como esta sintaxe para habilitar a busca reversa, imprimindo linhas que não correspondem ao resultado solicitado:

grep -v palavra-chave arquivo

Por exemplo, este comando exibe apenas aquelas linhas sem a palavra VPS no arquivo hostinger.txt:

grep -v VPS hostinger.txt
comando grep imprimindo linhas em busca invertida

Exibir números das linhas

Se você está trabalhando com arquivos grandes, como um registro, os dados de saída padrão podem ser muito longos. Isso torna difícil verificar a localização do padrão. Para simplificar a tarefa, você pode exibir os números das linhas com a opção -n, da seguinte forma:

grep -n palavra-chave arquivo

Por exemplo, este comando imprimirá as linhas de auth.log que contêm a palavra usuário desconhecido junto com seus números:

grep -n "usuário desconhecido" auth.log

A linha que começa com o número um significa que aquela é a primeira entrada do arquivo auth.log, e assim por diante.

comando grep com opção -n para exibir números das linhas

Dica

Você pode combinar as opções do grep para refinar a pesquisa. Por exemplo, execute grep -nv padrão arquivo para exibir o número da linha das entradas que não contêm o padrão especificado.

Usando grep com expressões regulares

Expressões regulares, ou regex, são sequências de caracteres que definem um padrão de pesquisa. Elas são úteis para fazer uma pesquisa muito específica sem ter que listar as palavras-chave individualmente. Aqui estão vários símbolos regex e seus significados:

  • . – corresponde a qualquer caractere único.
  • * – representa zero ou mais do caractere anterior.
  • + – significa um ou mais dos caracteres anteriores.
  • ? – indica zero ou um dos caracteres anteriores.
  • ^ – indica o início de um padrão regex.
  • $ – representa o fim de um padrão regex.
  • () – agrupa padrões.

Essas expressões regulares se comportam de maneira diferente se você usar a expressão regular estendida (ERE) com a opção -E ou a expressão regular básica padrão (BRE). Para mais informações, leia sobre as diferenças entre BRE e ERE.

Por exemplo, se você quer procurar padrões como abc e acc, execute o comando abaixo. O ponto (.) corresponderá a qualquer caractere:

grep -E 'a.c' arquivo

Os símbolos ^ e $ permitem que você procure por linhas que começam ou terminam com um padrão específico. Veja este exemplo de comando grep:

grep -E '^padrão' arquivo

O comando acima corresponderá a linhas que começam com padrão, como “padrão é uma sequência de texto“. Enquanto isso, o comando abaixo irá procurar por entradas que terminam com padrão:

grep -E 'padrão$' arquivo

Você também pode combinar vários símbolos regex para refinar sua busca por um resultado mais específico. Por exemplo, este comando procurará por linhas que contêm qualquer palavra que comece com um H e termine com R:

grep '^H.*R$' 1.txt
usando regex para filtrar comando grep

Pesquise múltiplos padrões

Você pode pesquisar várias palavras-chave usando um único comando grep. A maneira mais simples de fazer isso é listando as palavras-chave entre aspas () separadas por barras invertidas (\) e barras verticais (|). Aqui está um modelo:

grep 'padrão1\|padrão2\|padrão3' arquivo

Neste comando, o grep usa BRE, já que não estamos adicionando nenhuma opção. Para evitar que ele interprete o pipe como o padrão consultado, nós o escapamos usando a barra invertida.

buscando múltiplos padrões com regex no comando grep

Você também pode pesquisar vários padrões sem uma barra invertida adicionando a opção -E para habilitar a função especial do pipe, assim:

grep -E 'padrão1|padrão2|padrão3' arquivo

Em vez da opção -E, você pode fazer isso usando o comando egrep:

egrep 'padrão1|padrão2|padrão3' arquivo

Se você quiser especificar os padrões separadamente, use a opção -e para cada consulta de pesquisa. Aqui está a sintaxe:

grep -e padrão1 -e padrão2 -e padrão3 arquivo

Todas essas variações do comando grep produzem o mesmo resultado. Então, a escolha dependerá basicamente da sua preferência.

Contar correspondências

Várias tarefas de administração de sistema podem exigir que você verifique quantas linhas em um arquivo têm um padrão correspondente. Por exemplo, isso é útil para contar tentativas de login de um endereço IP específico em um arquivo de registro.

Para verificar quantas linhas contêm um padrão, use a opção -c ou –count, assim:

grep -c padrão arquivo

No entanto, a opção -c conta apenas as linhas correspondentes, não a ocorrência do padrão. Se você quiser verificá-las, use a opção -o e passe para o comando wc, assim:

grep -o padrão arquivo | wc -l

Em vez de exibir a linha inteira, a opção -o imprime apenas as ocorrências do padrão, que o comando wc conta. Vamos discutir o uso do pipe (|) na seção posterior.

contando número de correspondências com comando grep

Observe que este comando também conta outras variantes da palavra-chave. Por exemplo, se você usar o padrão connect, o grep verificará coisas como reconnectconnectedconnecting e disconnected.

Se você quiser contar apenas a palavra exata correspondente, adicione os limites da palavra no início e no final do seu termo de busca. Veja um exemplo:

grep -o '\bpadrão\b' arquivo 

Combine grep com outros comandos

Além de arquivos e diretórios, você pode filtrar dados de entrada de outro comando usando grep. Para fazer isso, combine-os usando um pipe (|), assim:

comando | grep padrão

Desta forma, o pipe redireciona a saída do primeiro comando para o grep, filtrando o resultado com base na palavra-chave. Aqui está um exemplo de uso:

ls | grep '\.txt$'

O comando ls lista o conteúdo do seu diretório atual. Em seguida, o comando grep filtra a saída, imprimindo arquivos TXT dentro da pasta. Aqui está outro exemplo:

ps aux | grep "nome_do_processo" 

O comando ps aux lista todos os processos em execução no seu sistema. Então, a utilidade grep procura por um processo específico da lista baseado em seu nome.

Dependendo da sua tarefa, você pode combinar grep com outras ferramentas. Os usuários da Hospedagem VPS da Hostinger podem usar nosso Assistente com IA, o Kodee, para explicar e gerar o comando completo.

Por exemplo, você pode pedir ao Kodee: “Eu quero listar todos os serviços no meu VPS Ubuntu e usar a utilidade grep para filtrar a saída, imprimindo apenas os relacionados ao NGINX. Gere o comando completo”. 

pedindo ajuda ao assistente IA kodee com o comando grep

Ele então escreverá o comando apropriado para o seu sistema e necessidades.

Redirecionar saídas

Se você administra um sistema, talvez precise salvar os resultados do comando grep para arquivá-lo ou reutilizá-lo no futuro. Uma maneira fácil de fazer isso é redirecionando a saída para um arquivo de texto usando o símbolo maior que (>). Aqui está a sintaxe:

grep padrão arquivo > arquivo_alvo.txt

Se o arquivo alvo não existir, o comando grep irá criá-lo automaticamente no seu diretório de trabalho atual.

Para verificar se o grep salva a saída corretamente, imprima o conteúdo do arquivo alvo usando o comando cat , assim:

cat arquivo_destino.txt

Quer aprender mais sobre comandos Linux?

Confira nosso tutorial de comandos Linux para aprender mais sobre outros utilitários muito importantes para o gerenciamento de servidores.

Conclusão

O comando grep  permite que você use um padrão para encontrar termos e linhas dentro de um arquivo (ou vários). Sua sintaxe básica é grep padrão arquivo, mas você pode adicionar várias opções para modificar a pesquisa de acordo com suas necessidades.

Por exemplo, adicione a opção -r  para buscar padrões de forma recursiva a partir de arquivos e subdiretórios dentro de uma pasta. Embora o grep seja sensível a maiúsculas e minúsculas por padrão, você pode desativar essa característica usando a opção -i para encontrar um termo correspondente, independentemente de sua capitalização.

Você também pode imprimir linhas que não correspondem ao termo usando a opção -v e adicionar a opção -n para mostrar o número de sequência delas. Para padrões de busca mais complexos, você pode usar símbolos de expressão regular.

Além disso, você pode combinar o comando grep com outros comandos e salvar os resultados da pesquisa em um arquivo para backup. Por ser uma ferramenta muito versátil e cheia de opções, você pode usar o Kodee para te ajudar a escrever o comando completo e dar dicas de uso. Boa sorte!

Como usar o comando grep: perguntas frequentes

Por fim, vamos conferir algumas perguntas frequentes sobre o comando grep.

Para que serve o comando grep?

O comando grep é um comando de processamento de texto usado para procurar linhas que contêm uma palavra-chave específica em um arquivo. Ele também é útil para filtrar a saída de outro comando, imprimindo apenas aquelas que possuem o padrão que você busca. Você pode fazer isso direcionando o comando para o grep.

Quais são as opções mais comuns usadas com grep?

Uma das opções mais comuns no grep inclui -i, que ignora a sensibilidade a maiúsculas e minúsculas na sua consulta. Outra opção popular é -r, que permite que você pesquise todos os arquivos e pastas dentro de um diretório. 

Posso procurar um padrão em vários arquivos ou diretórios usando grep?

Sim, você pode pesquisar uma palavra-chave em vários arquivos ou diretórios simplesmente listando-os no comando. Por exemplo, execute  grep padrão arquivo1.txt arquivo2.txt para encontrar um padrão nos dois arquivos. Para verificar palavras-chave em vários diretórios, use a opção -r seguida pelo caminho do diretório pai. 

Como eu procuro por linhas que não correspondem a um padrão?

Para imprimir linhas que não correspondem a um padrão, adicione a opção -v ao seu comando grep. Isso permitirá a funcionalidade de busca reversa, exibindo todas as entradas de um arquivo que não contém a palavra-chave.

Author
O autor

Ariane G.

A Ariane é SEO Team Leader com experiência em conteúdo, localização e SEO. Seu desafio é levar a Hostinger ao topo dos resultados no Brasil, França e Reino Unido. Eventualmente ela compartilha seu conhecimento no blog e nos tutoriais da Hostinger e no tempo livre ela gosta de explorar lugares novos e viver intencionalmente.