A diferença entre grep, egrep e fgrep
Dica publicada em Linux / Introdução
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.
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.
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:

grep "Lorem" teste.txt

egrep "Lorem|mauris" teste.txt

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

fgrep "." teste.txt

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