Pesquisa de site

Como fazer Grep para múltiplas strings, padrões ou palavras?


Introdução

Grep é uma das ferramentas de linha de comando mais poderosas e amplamente utilizadas em sistemas Linux/Unix. Significa “Global Regular Expression Print” e é usado para pesquisar arquivos de texto ou saída de comandos para padrões ou strings específicos.

Ele pode pesquisar toda uma estrutura de diretórios, filtrar os resultados e exibir apenas dados relevantes para o usuário. Grep é uma ferramenta versátil que pode ser usada para diversas tarefas, incluindo administração de sistema, programação e análise de dados.

Comandos básicos do Grep

Grep é uma poderosa ferramenta de linha de comando usada em sistemas operacionais baseados em Unix para pesquisar padrões específicos ou sequências de texto em arquivos ou saída de outros comandos. A sintaxe básica de um comando grep simples é a seguinte -

grep [options] pattern [file] 

O "padrão" é a string ou expressão regular que você deseja pesquisar, e o argumento "arquivo" especifica o nome do arquivo que você deseja pesquisar.

Se nenhum nome de arquivo for fornecido, o grep lerá a entrada padrão (por exemplo, a saída de outro comando). Uma das opções mais comuns usadas com grep é “-i”, o que torna a pesquisa insensível a maiúsculas e minúsculas.

Exemplos de como pesquisar uma única string ou padrão

Para procurar uma única string em um arquivo, use a seguinte sintaxe básica -

bash grep 'string' filename  

Por exemplo, se você quiser encontrar todas as ocorrências da palavra “maçã” em um arquivo chamado “frutas.txt”, você usaria -

grep 'apple' fruits.txt 

Se quiser corresponder um padrão em vez de uma string exata, você pode usar expressões regulares com grep.

Por exemplo, se você quiser encontrar todas as palavras que começam com "a" seguida por qualquer caractere e terminam com "le", você pode usar -

grep 'a.*le' fruits.txt 

Isso corresponderá a palavras como “maçã”, “capaz” e “abacate”.

Compreender os comandos básicos do Grep, como sintaxe e opções, é essencial antes de pesquisar várias strings ou padrões. A pesquisa de strings únicas requer o uso de aspas em torno da string desejada, enquanto a pesquisa de padrões requer o uso de expressões regulares.

Procurando por várias strings ou padrões

Grep é uma ferramenta incrivelmente poderosa que pode ser usada para pesquisar várias strings ou padrões em um determinado arquivo ou diretório. Por padrão, o Grep irá procurar a primeira ocorrência de um determinado padrão no arquivo, mas e se quisermos encontrar várias ocorrências de padrões diferentes de uma só vez?

É aqui que o operador OR (|) se torna útil. O operador OR nos permite procurar múltiplas strings ou padrões simultaneamente.

Para usar esta opção, basta listar cada string ou padrão separado pelo símbolo OR. Por exemplo, digamos que queremos encontrar todas as ocorrências de “maçã” ou “banana” em um arquivo chamado “frutas.txt”.

Usaríamos o seguinte comando -

grep 'apple|banana' fruits.txt  

Este comando retornará todas as linhas que contenham “apple” ou “banana”. É importante observar que ao usar o operador OR, cada string ou padrão deve ser colocado entre seu próprio conjunto de aspas.

O operador OR também pode ser combinado com outras opções do Grep, como -i (não diferencia maiúsculas de minúsculas), -v (correspondência invertida) e -r (recursivo). Por exemplo, digamos que queremos procurar todas as linhas que contenham "maçã", "banana" ou "cereja" em qualquer arquivo dentro de um diretório chamado "pasta_frutas".

Usaríamos o seguinte comando -

grep -ir 'apple|banana|cherry' fruits_folder/ 

Procurando palavras dentro de um contexto específico

Grep pode ser usado para pesquisar palavras ou padrões específicos dentro de um determinado contexto. Isso é particularmente útil quando você precisa encontrar informações relacionadas a um tópico específico e deseja ver parte do texto ao redor para obter mais contexto. As opções de contexto no Grep permitem especificar quantas linhas de contexto devem ser exibidas antes e/ou depois de cada correspondência.

Explicação de como usar o Grep com opções de contexto (-A, -B, -C)

Existem três opções de contexto diferentes no Grep -

  • -A - exibe o número especificado de linhas após cada partida

  • -B - exibe o número especificado de linhas antes de cada partida

  • -C −exibe o número especificado de linhas antes e depois de cada correspondência Você pode usar qualquer combinação dessas opções dependendo do tipo de contexto necessário.

Procurando apenas correspondências exatas

Você já ficou frustrado ao tentar pesquisar uma palavra ou frase exata usando o Grep, mas os resultados da pesquisa também apresentam várias correspondências parciais? Isso pode ser especialmente comum ao pesquisar arquivos grandes com muito texto. Felizmente, existe uma opção no Grep que permite pesquisar apenas correspondências exatas - a opção de limite de palavra.

A opção de limite de palavras explicada

A opção de limite de palavra (\b) é um caractere especial que diz ao Grep para combinar apenas palavras que tenham início e fim. Isso ajuda a garantir que os resultados da sua pesquisa não incluam correspondências parciais (por exemplo, se você estiver pesquisando por "gato", não retornará resultados como "lagarta" ou "espalhado"). O caractere \b normalmente é usado em combinação com outros termos de pesquisa para criar uma pesquisa mais refinada.

Para refinar sua pesquisa para incluir apenas ocorrências exatas da palavra "maçã", adicione o caractere \b antes e depois da palavra -

grep '\bapple\b' file.txt 

Isso retornará apenas linhas nas quais a frase exata “maçã” aparece.

Exemplos de pesquisas de correspondência exata usando a opção de limite de palavras

Aqui estão alguns exemplos de como você pode usar a opção de limite de palavra na prática: - Para encontrar todas as ocorrências de "livro" e "livros", mas nenhuma outra palavra que contenha essas letras -

grep '\bbook\b' file.txt
  • Para encontrar todas as ocorrências de "cat" e "cats", mas nenhuma outra palavra contendo essas letras - grep '\bcat\b' file.txt- Para encontrar todas as ocorrências da frase exata "análise de dados":

grep '\bdata analysis\b' file.txt

Usar a opção de limite de palavra pode melhorar significativamente a precisão e a relevância de suas pesquisas no Grep. Experimente diferentes combinações de termos de pesquisa e refine seus resultados até encontrar exatamente o que procura.

Pesquisando usando expressões regulares

Expressões regulares são um conjunto de caracteres usados para definir padrões de pesquisa. Eles permitem pesquisas mais complexas e específicas do que a simples correspondência de strings ou padrões.

As expressões regulares fornecem uma maneira flexível de pesquisar texto em arquivos e podem ser usadas para extrair informações de grandes conjuntos de dados. Grep possui suporte integrado para expressões regulares, o que o torna uma excelente ferramenta para realizar pesquisas complexas.

Explicação de expressões regulares e seus usos em pesquisas Grep

Expressões regulares consistem em vários caracteres que possuem significados especiais quando usados com Grep. Por exemplo, o caractere ponto (.) corresponde a qualquer caractere único, enquanto o asterisco (*) corresponde a zero ou mais ocorrências do caractere anterior. O caractere de barra vertical (|) é usado para separar vários padrões de pesquisa, enquanto colchetes ([]) são usados para criar um conjunto de caracteres que corresponde a qualquer um dos caracteres incluídos.

Um recurso poderoso das expressões regulares é a capacidade de usar grupos e referências anteriores. Os grupos são criados colocando parte da expressão entre parênteses().

Conclusão

Grep é uma ferramenta poderosa que permite aos usuários pesquisar várias strings, padrões ou palavras em um determinado arquivo. Ao dominar os comandos básicos e a sintaxe do Grep, os usuários podem pesquisar facilmente instâncias individuais de uma string ou padrão. No entanto, o verdadeiro poder do Grep reside na sua capacidade de procurar múltiplas strings ou padrões de uma só vez.

Ao usar o operador OR (|), os usuários podem expandir suas pesquisas para incluir muitas possibilidades diferentes ao mesmo tempo. Além disso, usando opções de contexto (-A, -B, -C), os usuários podem pesquisar palavras específicas em um contexto mais amplo.

Artigos relacionados: