Compreendendo GREP no Linux: Uso e Aplicações

Compreendendo GREP no Linux: Uso e Aplicações
Uma pessoa usando um laptop.

Grep é uma ferramenta UNIX compacta projetada para pesquisa de padrões. Originalmente introduzida no V6 UNIX, ela se tornou um item básico em vários sistemas operacionais semelhantes ao UNIX, incluindo Linux, macOS e variantes BSD. Neste artigo, exploraremos os recursos fundamentais do Grep e forneceremos exemplos práticos para sua aplicação em tarefas cotidianas.

Compreendendo os fundamentos do Grep

A função primária do Grep é direta: ele processa entradas para identificar e exibir padrões de texto correspondentes. Este utilitário pode examinar quase qualquer fonte de texto simples, permitindo que ele escaneie arquivos diretamente ou trabalhe com saídas de outros comandos.

Para começar a usar Grep, um dos comandos mais simples é ler de um arquivo de texto. Por exemplo, você pode exibir o conteúdo de sample.txtcom o seguinte comando:

Você também pode pesquisar palavras específicas em seus arquivos de texto:

Grep correspondendo a uma palavra em um terminal.

Além disso, o Grep pode ser combinado com pipes UNIX para unificar vários comandos em uma única operação:

Usando Grep para imprimir um arquivo inteiro sem argumentos.

Para obter mais informações sobre como os pagers operam no Linux, consulte nossa folha de dicas sobre GNU less.

Procurando por arquivos em um diretório

Uma aplicação prática do Grep é localizar arquivos em um diretório. Você pode canalizar a saída do lscomando diretamente para o Grep.

Por exemplo, este comando exibirá todos os arquivos JPEG no seu diretório Downloads destacando suas extensões:

Filtrando listas de arquivos pelo Grep por extensão de arquivo.

Você pode estender a lssaída e executar uma correspondência de padrões mais complexa. Por exemplo, o comando a seguir lista todos os arquivos no diretório atual que são menores que 1MB:

Capacidade do Grep de corresponder texto em formatos maiores.

Ignorando a diferenciação entre maiúsculas e minúsculas

Por padrão, a maioria das ferramentas do tipo UNIX são sensíveis a distinções de maiúsculas e minúsculas. Isso significa que as strings “Hello,””hello,””hEllo,”e “helLo” são interpretadas como entradas distintas.

A natureza sensível a maiúsculas e minúsculas do Grep por padrão.

Isso pode complicar pesquisas de texto, especialmente quando diferentes casos de uma palavra estão presentes. Para mitigar isso, você pode usar Grep com o -isinalizador pareado com o termo de pesquisa:

O sinalizador -i no Grep desabilita a diferenciação entre maiúsculas e minúsculas.

Pesquisando recursivamente

O Grep tem a capacidade de pesquisar em vários arquivos ou diretórios inteiros simultaneamente. Isso é particularmente útil ao examinar um projeto com vários arquivos e você deseja encontrar ocorrências de texto específico em um diretório. Por exemplo, use o comando a seguir para localizar o termo “MakeTechEasier” dentro do diretório “sample”:

A funcionalidade recursiva do Grep pesquisando vários arquivos.

Vale a pena notar que empregar o -rsinalizador obriga o Grep a examinar todos os arquivos no seu diretório especificado, o que pode incluir arquivos não-texto. Para evitar essa situação, use o -Isinalizador também:

Identificando arquivos com sequências específicas

Além de apenas exibir onde uma string aparece dentro de arquivos, o Grep pode gerar uma lista de arquivos que contêm o texto que você está procurando. Isso é útil quando você quer verificar se um arquivo tem determinado conteúdo sem exibir cada instância encontrada.

Para fazer isso, use Grep com os seguintes sinalizadores, -re -l, junto com sua string de destino e o diretório que você deseja pesquisar:

Grep exibe os caminhos de arquivo do conteúdo correspondente.

Além disso, você pode encapsular seu comando Grep dentro de um subshell Bash para impor múltiplas condições de pesquisa. O comando a seguir, por exemplo, retornará arquivos contendo “Hello” e “MakeTechEasier” no diretório “sample”:

Usando subshells Bash com Grep para correspondência de múltiplas condições.

Revelando resultados não correspondentes

Além das pesquisas padrão, o Grep também pode gerar resultados que excluem seus critérios especificados. Essa funcionalidade pode ser bastante benéfica quando você precisa detectar erros ou irregularidades em suas entradas de texto.

Para executar isso, empregue o -vsinalizador em conjunto com suas opções preferidas. Por exemplo, o comando a seguir escaneia recursivamente todos os arquivos no diretório “/etc/nginx” e retorna quaisquer linhas que não incluam a string “nginx”:

Usando o sinalizador invert para corresponder a tudo, exceto a uma string específica.

Procurando por palavras e linhas

Também pode ser benéfico instruir o Grep a procurar por palavras inteiras ou linhas inteiras em vez de qualquer sequência que se encaixe em um padrão específico. Essa abordagem é particularmente útil ao mirar uma sequência de caracteres que é prevalente em várias palavras. Por exemplo, procurar pelo termo “it” pode gerar vários falsos positivos, pois ele ocorre em muitas outras palavras.

Para resolver isso, execute Grep usando o -wsinalizador seguido pela palavra desejada:

Executando correspondência de palavras inteiras com Grep.

Em vez de retornar todas as instâncias que contêm o padrão de pesquisa, o Grep produz apenas a palavra em si. Isso se aplica a linhas inteiras também ao usar o -xsinalizador, tornando-o particularmente útil para localizar frases ou linhas exatas em arquivos de configuração.

Grep correspondendo linhas inteiras de texto.

Incorporando números de linha na saída do Grep

Os números de linha desempenham um papel vital na depuração de código e na revisão de documentos. Eles simplificam o processo de apontar a localização de uma linha ou função específica, acelerando significativamente as revisões.

Grep oferece funcionalidade para incluir números de linha em sua saída. Você pode ativar isso executando o comando com o -nsinalizador junto com seu termo de pesquisa:

Grep exibindo números de linha para correspondências em um arquivo.

Quando combinado com pipes UNIX, você pode refinar a saída do Grep para mostrar apenas os números de linha dos seus resultados de pesquisa. Essa abordagem é particularmente útil para processar grandes volumes de texto:

Utilizando pipes UNIX com Grep para processamento de saída refinado.

Empregando Regex Estendido com Grep

Grep utiliza Basic Regular Expressions (BRE) como seus metacaracteres primários para correspondência de texto. Embora isso seja funcional para várias tarefas, os usuários podem achar isso restritivo, especialmente ao examinar grupos de padrões.

Para expandir a capacidade, muitas implementações do Grep incorporam o -Esinalizador para habilitar a análise de Expressões Regulares Estendidas (ERE). Por exemplo, o comando abaixo requer o -Esinalizador:

Usando Extended Regex com Grep para correspondência de padrões.

Além disso, Grep tem um modo especial que elimina funcionalidades regex completamente. Para ativá-lo, execute o comando com o -Fflag seguido por uma string simples:

Correspondência exata de strings sem regex no Grep.

Incluindo linhas circundantes na saída do Grep

A força do Grep está em revelar onde o texto aparece na sua entrada ou arquivos. No entanto, apenas exibir o local exato pode não ser suficiente ao solucionar problemas. O contexto em torno de uma string, como o encontrado em logs de travamento, pode frequentemente fornecer insights essenciais.

Para imprimir contexto adicional, você pode executar Grep com o -Csinalizador combinado com o número de linhas que você deseja exibir antes e depois do resultado da sua pesquisa. Por exemplo, para mostrar cinco linhas ao redor da sua string de destino, use o seguinte comando:

Grep exibindo o contexto ao redor de uma string correspondente.

Você também pode personalizar seus resultados imprimindo seletivamente apenas as linhas anteriores ou seguintes usando os sinalizadores -Be -A. Por exemplo, o comando abaixo exibirá as dez linhas que vêm depois do seu termo de pesquisa:

Grep imprime linhas que seguem a string correspondente.

Agora que você está equipado com o conhecimento fundamental do Grep e como utilizá-lo para tarefas comuns, você está pronto para se aprofundar mais na linha de comando e no ecossistema UNIX mais amplo. Explore mais aprendendo como usar sed no Linux para processamento de texto ainda mais poderoso.

Crédito da imagem: Alejandro Escamilla via Unsplash . Todas as modificações e capturas de tela por Ramces Red.

Fonte

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *