Buscar padrões em textos com comando grep no Linux

Como procurar padrões em textos com o comando grep no Linux

O comando grep no Linux é uma ferramenta bastante interessante e muito útil para realizar pesquisa de texto em arquivos e na saída de outros comandos. Seu nome vem de “Global Regular Expression Print“, pois ele permite buscar padrões usando expressões regulares.

Trata-se de uma ferramenta extremamente versátil e pode ser utilizado para localizar linhas específicas em arquivos, realizar pesquisas avançadas e filtrar dados com precisão.

Neste artigo veremos como usar o grep para realizar busca em textos de forma simplificada.

Sintaxe Básica do Comando grep

A sintaxe básica do grep é:

grep [opções] padrão arquivo

Os parâmetros mais comuns são:

  • padrão: o texto ou expressão regular que será pesquisado.
  • arquivo: o arquivo onde será realizada a busca (ou vários arquivos).

Exemplos de Uso do Comando grep

1. Buscar uma Palavra em um Arquivo

Para localizar uma palavra exata em um arquivo, basta especificar o termo e o arquivo. Vamos criar um arquivo de nome arquivo.txt e inserir algum conteúdo nele:

$ ls -l > arquivo.txt

E então buscar uma palavra dentro do arquivo, como a palavra “Documentos”:

$ grep "Documentos" arquivo.txt

Este comando exibe todas as linhas em arquivo.txt que contêm a palavra “Documentos”.

2. Pesquisa Insensível a Maiúsculas e Minúsculas

Para ignorar diferenças entre maiúsculas e minúsculas, usamos a opção -i:

$ grep -i "documentos" arquivo.txt

Este comando encontra “documentos”, “Documentos”, “DOCUMENTOS”, etc.

3. Contar Ocorrências de um Padrão

Para contar em quantas linhas um padrão ocorre em um arquivo, utilizamos a opção -c, Por exemplo, em quantas linhas a palavra “fabio” ocorre no arquivo.txt?

$ grep -c "fabio" arquivo.txt

Aqui, o grep mostra o número total de linhas contendo “fabio” no arquivo.

4. Exibir Números das Linhas

Para exibir o número das linhas onde o padrão é encontrado, usamos -n:

$ grep -n "fabio" arquivo.txt

Cada linha que contém a palavra “fabio” será exibida com seu número correspondente em arquivo.txt.

5. Buscar Recursivamente em Diretórios

A opção -r permite buscar em arquivos dentro de um diretório e seus subdiretórios:

$ grep -r "fabio" /home/fabio

Esse comando busca o termo “fabio” em todos os arquivos dentro do diretório /home/fabio.

Opcionalmente nesse caso, poderíamos usar o caracter curinga ~:

$ grep -r "fabio" ~

6. Buscar Linhas que Não Contêm um Padrão

Para encontrar linhas que não contêm o termo especificado, use a opção -v:

$ grep -v "4096" arquivo.txt

O comando acima exibe todas as linhas de arquivo.txt que não contêm a string “4096”.

7. Buscar com Expressões Regulares

O grep é muito poderoso com expressões regulares. Por exemplo, para localizar palavras que começam com “D” e terminam com “s”:

$ grep "\bD[a-z]*s\b" arquivo.txt

Esse comando localiza palavras como “Documentos” e “Downloads” em arquivo.txt.

8. Exibir Apenas o Nome do Arquivo

Para listar apenas os nomes dos arquivos onde o padrão foi encontrado, usamos -l:

$ grep -l "fabio" *.txt

Se o termo “fabio” for encontrado em um ou mais arquivos, apenas os nomes desses arquivos serão listados.

Opções Adicionais Úteis do grep

  • -w: Busca palavras exatas. Por exemplo, grep -w “Do” arquivo.txt localiza apenas a palavra “Do” e não “Documentos” ou “Downloads”.
  • -A n: Exibe n linhas após a linha encontrada. Por exemplo: grep -A 2 “Documentos” arquivo.txt encontra a palavra “Documentos” e mostra também as duas linhas seguintes a ela.
  • -B n: Exibe n linhas antes da linha encontrada.
  • -C n: Exibe n linhas antes e depois da linha encontrada.

Exercícios Práticos com Resolução

Vejamos agora alguns exercícios extras para treinarmos o uso do comando grep no Linux.

Para tal vamos criar um arquivo de nome “grep.txt” com o conteúdo das páginas de ajuda do próprio comando man, como segue:

$ man man > grep.txt

Exercício 1: Encontrar um Termo em um Arquivo

Instrução: Encontre todas as linhas que contêm a palavra “manual” no arquivo grep.txt.

Solução:

$ grep "manual" grep.txt

Exercício 2: Pesquisar Insensivelmente a Palavra “comandos” em um Arquivo

Instrução: Busque o termo “comandos” de forma insensível a maiúsculas em grep.txt.

Solução:

$ grep -i "comandos" grep.txt

Exercício 3: Contar Linhas que Contêm uma Palavra em um Arquivo

Instrução: Conte o número de linhas que contêm a palavra “página” no arquivo grep.txt.

Solução:

$ grep -c "página" grep.txt

Exercício 4: Buscar Recursivamente por um Padrão em um Diretório

Instrução: Busque o termo “my.cnf” em todos os arquivos dentro do diretório /etc/mysql/

Solução:

$ grep -r "my.cnf" /etc/mysql/

Exercício 5: Listar Apenas Nomes de Arquivos Contendo um Padrão

Instrução: Liste os nomes dos arquivos .conf em /etc que contêm a palavra “sudo”.

Solução:

$ grep -l "sudo" /etc/*.conf

Conclusão

Vimos neste tutorial a sintaxe e uso básico do comando grep no Linux, incluindo alguns exemplos de aplicação na linha de comandos e exercícios resolvidos. Trata-se de uma ferramenta muito útil para administradores de sistemas, usuários em geral e até mesmo programadores que utilizam o Linux em seu dia-a-dia.

Nos próximos artigos aprenderemos a usar outras ferramentas também muito úteis no Linux, como por exemplo os comandos sort, awk e find.

 

Sobre Fábio dos Reis (1223 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*