A diferença entre grep, egrep e fgrep

Publicado por Mateus Gabriel Müller em 08/10/2017

[ Hits: 40.411 ]

Blog: http://4fasters.com.br/

 


A diferença entre grep, egrep e fgrep



Na dica de hoje, venho mostrar a diferença entre os comandos de filtragem de texto grep, egrep e fgrep de forma muito simples e resumida. Esse é, inclusive, um requisito para a certificação LPIC-1.

O que é o grep

O grep é um utilitário já embutido no Kernel para efetuar um filtro durante uma pesquisa. Por exemplo: durante esta pesquisa, quero que você me retorne somente os arquivos com a extensão .doc. Isso é possível com o grep.

O que é o egrep

O egrep é um atalho para o comando grep -E. A opção -E permite o uso de expressões regulares para filtragem de texto. Por exemplo: +, |, () etc.

O que é o fgrep

O fgrep é um atalho para o comando grep -F. Por padrão, o grep não trata metacaracteres como filtros, como, por exemplo, o ponto ".". O fgrep então habilita esta opção de filtragem.

Ficou confuso? Vamos a alguns exemplos para ficar mais claro.

Eu criei um arquivo de texto aleatório e colei o seguinte conteúdo:
Vamos lá então!

grep "Lorem" teste.txt
O grep busca por palavras-chave. Mas, e se quisermos filtrar por mais de uma palavra? Teremos que usar regex (expressões regulares) e é aí que o egrep entra.

egrep "Lorem|mauris" teste.txt
Neste caso, estamos pedindo para buscar as instâncias da palavra Lorem ou mauris.

E se eu quiser filtrar por todas as instâncias que tenham um metacaractere? Como o grep entende como uma expressão regular, devemos usar o fgrep para isso.

Veja, testando com grep o filtro por ".".

grep "." teste.txt
Agora com fgrep:

fgrep "." teste.txt
Agora ele conseguiu filtrar pelo metacaracter ".".

Bom pessoal, de forma simples esta é a diferença entre eles.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Roteamento com marcação de pacotes

Cacti em distribuições Debian - Instalando plugins

Ajustando horário nas estações

Ubuntu: instalando programa local com gdebi

A importância de validações no lado do servidor

  

Comentários
[1] Comentário enviado por eduardo em 09/10/2017 - 14:11h

Simples e eficiente! Parabéns pelo artigo.
Abraço

[2] Comentário enviado por elgio em 12/10/2017 - 20:42h

Olá.

Legal a iniciativa de abordar um assunto cobrado em certificação.

Mas vi alguns problemas no que você escreveu:

1) grep não é do kernel. É um aplicativo como qualquer outro

2) grep interpreta expressões regulares tal como egrep. Ocorre que o egrep interpreta as expressões regulares estendidas. Uma expressão regular, por exemplo, para procurar números que se repetem uma ou mais vezes:
grep "[0-9]\+"...
egrep "[0-9]+"...

Além das diferenças de escape, expressões e estendidas são melhores. O Perl meio que inaugurou as estendidas. Chegou-se ao ponto de dizer "sintaxe Perl".



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts