Compreendendo GREP no Linux: Uso e Aplicações
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.txt
com o seguinte comando:
Você também pode pesquisar palavras específicas em seus arquivos de texto:
Além disso, o Grep pode ser combinado com pipes UNIX para unificar vários comandos em uma única operação:
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 ls
comando diretamente para o Grep.
Por exemplo, este comando exibirá todos os arquivos JPEG no seu diretório Downloads destacando suas extensões:
Você pode estender a ls
saí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:
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.
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 -i
sinalizador pareado com o termo de pesquisa:
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”:
Vale a pena notar que empregar o -r
sinalizador 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 -I
sinalizador 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, -r
e -l
, junto com sua string de destino e o diretório que você deseja pesquisar:
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”:
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 -v
sinalizador 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”:
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 -w
sinalizador seguido pela palavra desejada:
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 -x
sinalizador, tornando-o particularmente útil para localizar frases ou linhas exatas em arquivos de configuração.
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 -n
sinalizador junto com seu termo de pesquisa:
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:
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 -E
sinalizador para habilitar a análise de Expressões Regulares Estendidas (ERE). Por exemplo, o comando abaixo requer o -E
sinalizador:
Além disso, Grep tem um modo especial que elimina funcionalidades regex completamente. Para ativá-lo, execute o comando com o -F
flag seguido por uma string simples:
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 -C
sinalizador 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:
Você também pode personalizar seus resultados imprimindo seletivamente apenas as linhas anteriores ou seguintes usando os sinalizadores -B
e -A
. Por exemplo, o comando abaixo exibirá as dez linhas que vêm depois do seu termo de pesquisa:
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.
Deixe um comentário