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á?
Conteúdo
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
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
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 .
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
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
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
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.
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
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.
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.
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 reconnect, connected, connecting 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”.
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.