Pesquisa de site

20 exemplos úteis de comando egrep no Linux


Resumo: Neste guia, discutiremos alguns dos exemplos práticos do comando egrep. Depois de seguir este guia, os usuários poderão realizar pesquisas de texto com mais eficiência no Linux.

Você já ficou frustrado por não conseguir encontrar as informações necessárias nos registros? Extrair as informações necessárias de um grande conjunto de dados é uma tarefa complexa e demorada.

As coisas se tornam realmente desafiadoras se o sistema operacional não fornecer as ferramentas certas e aí vem o Linux para resgatá-lo. O Linux fornece vários utilitários de filtragem de texto, como awk, sed, cut, etc.

No entanto, egrep é um dos utilitários mais poderosos e comumente usados para processamento de texto no Linux, e discutiremos alguns exemplos do comando egrep.

O comando egrep no Linux é reconhecido pela família do comando grep, que é usado para pesquisar e combinar um padrão específico em arquivos. Funciona de forma semelhante ao grep -E (grep Extended regex), mas pesquisa principalmente um arquivo específico ou mesmo linhas por linha ou imprime a linha no arquivo fornecido.

A sintaxe do comando egrep é a seguinte:

egrep [OPTIONS] PATTERNS [FILES]

Vamos criar um arquivo de texto de amostra com o seguinte conteúdo para usar um exemplo:

cat sample.txt

Aqui podemos ver que o arquivo de texto está pronto. Agora vamos discutir alguns exemplos comuns que podem ser usados diariamente.

1. Como encontrar um padrão em um único arquivo

Vamos começar com um exemplo simples de correspondência de padrões, onde podemos usar o comando abaixo para procurar uma string professional em um arquivo sample.txt:

egrep professionals sample.txt

Aqui podemos ver que o comando imprime a linha que contém o padrão especificado.

2. Como destacar padrões correspondentes no arquivo

Podemos tornar a saída mais informativa destacando o padrão correspondente. Para conseguir isso, podemos usar a opção --color do comando egrep. Por exemplo, o comando abaixo irá destacar o texto profissionais na cor vermelha:

egrep --color=auto professionals sample.txt

Aqui, podemos ver que a mesma saída é mais informativa em comparação com a anterior. Além disso, podemos identificar facilmente que a palavra profissionais é repetida duas vezes.

Na maioria dos sistemas Linux, a configuração acima é habilitada por padrão usando o seguinte alias:

alias egrep='egrep –color=auto'

3. Como encontrar um padrão em vários arquivos

O comando egrep aceita vários arquivos como argumento, o que nos permite procurar um padrão específico em vários arquivos. Vamos entender isso com um exemplo.

Primeiro, crie uma cópia do arquivo sample.txt:

cp sample.txt sample-copy.txt

Agora, procure o padrão professionals em ambos os arquivos:

egrep professionals sample.txt sample-copy.txt 

No exemplo acima, podemos ver o nome do arquivo na saída, que representa a linha correspondente desse arquivo.

4. Como contar linhas correspondentes em um arquivo

Às vezes só precisamos descobrir se o padrão está ou não presente no arquivo. Se sim, então em quantas linhas está presente? Nesses casos, podemos usar a opção -c do comando.

Por exemplo, o comando abaixo mostrará 1 como saída porque a palavra professionals está presente em apenas uma linha.

egrep -c professionals sample.txt

1

5. Como imprimir apenas linhas correspondentes no arquivo

No exemplo anterior, vimos que a opção -c não conta o número de ocorrências do padrão. Por exemplo, a palavra professionals aparece duas vezes na mesma linha, mas a opção -c a trata apenas como uma única correspondência.

Nesses casos, podemos usar a opção -o do comando para imprimir apenas o padrão correspondente. Por exemplo, o comando abaixo mostrará a palavra professionals em duas linhas separadas:

egrep -o professionals sample.txt

Agora, vamos contar as linhas usando o comando wc:

egrep -o professionals sample.txt | wc -l

No exemplo acima, usamos a combinação dos comandos egrep e wc para contar o número de ocorrências de um padrão específico.

6. Como encontrar um padrão ignorando maiúsculas e minúsculas

Por padrão, egrep executa a correspondência de padrões diferenciando maiúsculas de minúsculas. Significa palavras – nós, Nós, NÓS e NÓS somos tratados como palavras diferentes. No entanto, podemos impor a pesquisa sem distinção entre maiúsculas e minúsculas usando a opção -i.

Por exemplo, no comando abaixo, a correspondência de padrão será bem-sucedida para o texto we e We:

egrep -i we sample.txt 

7. Como excluir padrões parcialmente correspondentes

No exemplo anterior, vimos que o comando egrep realiza uma correspondência parcial. Por exemplo, quando procuramos pelo texto nós, a correspondência de padrões também foi bem-sucedida para outros textos. Como web, site e eram.

Para superar essa limitação, podemos usar a opção -w, que impõe a correspondência de palavras inteiras.

egrep -w we sample.txt

8. Como inverter a correspondência de padrões em arquivo

Até agora, usamos o comando egrep para imprimir as linhas nas quais o padrão fornecido está presente. Porém, às vezes queremos realizar a operação de forma oposta.

Por exemplo, podemos querer imprimir as linhas nas quais o padrão fornecido não está presente. Podemos conseguir isso com a ajuda da opção -v:

egrep -v we sample.txt

Aqui podemos ver que o comando imprime toda a linha que não contém o texto nós.

9. Como Encontrar o Número da Linha do Padrão

Podemos usar a opção -n do comando para ativar a numeração de linha, que mostra o número da linha na saída quando a correspondência de padrões é bem-sucedida. Este truque simples torna a saída mais significativa.

egrep -n professionals sample.txt

Na saída acima, podemos ver que a palavra professionals está presente na linha.

10. Como realizar a correspondência de padrões no modo silencioso

No modo silencioso, o comando egrep não imprime o padrão correspondente. Portanto, temos que usar o valor de retorno do comando para identificar se a correspondência de padrões foi bem-sucedida ou não.

Podemos usar a opção -q do comando para ativar o modo silencioso, o que é útil ao escrever scripts de shell.

egrep -q professionals sample.txt
egrep -q non-existing-pattern sample.txt

Neste exemplo, o valor de retorno zero indica a presença do padrão, enquanto o valor diferente de zero indica a ausência do padrão.

11. Como exibir linhas antes da correspondência de padrões

Às vezes, faz sentido mostrar algumas linhas ao redor do padrão correspondente. Para tais cenários, podemos usar a opção -B do comando, que exibe N linhas antes do padrão correspondente.

Por exemplo, o comando abaixo imprimirá a linha para a qual a correspondência do padrão foi bem-sucedida, bem como 2 linhas antes dela.

egrep -B 2 -n professionals sample.txt 

Neste exemplo, usamos a opção -n para exibir números de linha.

12. Como exibir linhas após a correspondência de padrões

De forma semelhante, podemos usar a opção -A do comando para exibir linhas após a correspondência do padrão. Por exemplo, o comando abaixo imprimirá a linha para a qual a correspondência de padrão foi bem-sucedida, bem como as próximas 2 linhas.

egrep -A 2 -n professionals sample.txt

13. Como exibir linhas ao redor da correspondência de padrões

Além disso, o comando egrep suporta a opção -C que combina a funcionalidade das opções -A e -B, que exibe as linhas antes e depois do padrão correspondente.

egrep -C 2 -n professionals sample.txt 

14. Como encontrar um padrão em vários arquivos recursivamente

Conforme discutido anteriormente, podemos realizar correspondência de padrões em vários arquivos. No entanto, a situação fica complicada quando os arquivos estão presentes em vários subdiretórios e passamos todos eles como argumentos de comando.

Nesses casos, podemos realizar a correspondência de padrões de forma recursiva usando a opção -r conforme mostrado no exemplo a seguir.

Primeiro, crie 2 subdiretórios e copie o arquivo sample.txt neles:

mkdir -p dir1/dir2
cp sample.txt dir1/
cp sample.txt dir1/dir2/

Agora, vamos realizar a operação de busca de forma recursiva:

egrep -r professionals dir1

No exemplo acima, podemos ver que a correspondência de padrão foi bem-sucedida para os arquivos dir1/dir2/sample.txt e dir1/sample.txt.

15. Como combinar um único caractere usando expressões regulares

Podemos usar um caractere ponto (.) para corresponder a qualquer caractere único, exceto o final da linha. Por exemplo, a expressão regular abaixo corresponde ao texto har, hat e has:

egrep "ha." sample.txt

16. Como combinar zero ou mais ocorrências de personagem

Podemos usar o asterisco (*) para corresponder a zero ou mais ocorrências do caracter anterior. Por exemplo, a expressão regular abaixo corresponde ao texto que contém uma string we seguida por zero ou mais ocorrências do caractere b.

egrep "web*" sample.txt

17. Como combinar uma ou mais ocorrências do personagem anterior

Podemos usar o sinal de mais (+) para corresponder a uma ou mais ocorrências do caracter anterior. Por exemplo, a expressão regular abaixo corresponde ao texto que contém a string we seguida por pelo menos uma ocorrência do caractere b.

egrep "web+" sample.txt

Aqui, podemos ver que a correspondência de padrões não funciona para as palavras – nós e estávamos, devido à ausência do caractere b.

18. Como combinar o início da linha

Podemos usar o cursor (^) para representar o início da linha. Por exemplo, a expressão regular abaixo imprime as linhas que começam com o texto We:

egrep "^We" sample.txt

19. Como combinar o fim da linha

Podemos usar o dólar ($) para representar o fim da linha. Por exemplo, a expressão regular abaixo imprime as linhas que terminam com o texto e.:

egrep "e.$" sample.txt

20. Como remover linhas vazias do arquivo

Podemos usar o sinal de intercalação (^) imediatamente seguido pelo dólar ($) para representar a linha vazia. Vamos usar isso em uma expressão regular para remover linhas vazias:

egrep -n -v "^$" sample.txt

Na saída acima, podemos ver que os números de linha 2, 4, 6, 8 e 10 não são exibidos porque estão vazios.

Conclusão

Neste artigo, discutimos alguns exemplos úteis dos comandos egrep. Pode-se usar esses exemplos na vida cotidiana para melhorar a produtividade.

Você conhece algum outro exemplo melhor do comando egrep no Linux? Deixe-nos saber sua opinião nos comentários abaixo.