Qual é a diferença entre Grep, Egrep e FGREP no Linux?

Qual é a diferença entre Grep, Egrep e FGREP no Linux?

Uma das renomadas ferramentas de pesquisa em sistemas do tipo Unix, que podem ser usados ​​para procurar qualquer coisa, seja um arquivo, ou uma linha ou várias linhas no arquivo é o utilitário grep. É muito vasto funcionalidade que pode ser atribuída ao grande número de opções que suporta como: pesquisar usando o padrão de string ou o padrão Reg-Ex ou o Reg-Ex baseado em Perl etc.

Diferença entre grep, egrep e FGREP no Linux

Devido às suas funcionalidades variadas, possui muitas variantes, incluindo grep, egrep (Grep estendido), FGREP (Grep fixo), PGREP (Processe Grep), rgrep (Grep recursivo) etc. Mas essas variantes têm pequenas diferenças para o original grep O que os tornou populares e usados ​​por vários programadores Linux para tarefas específicas.

A principal coisa que resta a ser investigada é quais são as diferenças entre as três principais variantes i.e. 'grep', 'egrep' e 'FGREP' de grep que faz com que os usuários do Linux escolham uma ou outra versão conforme o requisito.

Alguns meta-caracteres especiais de grep

  1. + - Equivalente a uma ou mais ocorrências de personagens anteriores.
  2. ? - Isso denota quase 1 repetição de personagem anterior. Como: a? Combinaria 'a' ou 'aa'.
  3. ( - Início da expressão de alternância.
  4. ) - Fim da expressão de alternância.
  5. | - Corresponder a qualquer expressão separada por '|'. Como: “(A | B) CDE” também corresponderia 'abcde' ou 'bbcde'.
  6. - Este meta-caractere indica o especificador de início do intervalo. Como: “A 2” partidas "AA" no arquivo i.e. 2 vezes.
  7. - Este meta-caractere indica o especificador final da faixa.

Diferenças entre Grep, Egrep e FGREP

Algumas principais diferenças entre grep, egrep e FGREP pode ser destacado da seguinte maneira. Para este conjunto de exemplos, estamos assumindo o arquivo em que operação está sendo executada para ser:

Comando Linux Grep

Comando Grep

grep ou Impressão de expressão regular global é o principal programa de pesquisa em sistemas do tipo Unix, que podem procurar qualquer tipo de string em qualquer arquivo ou lista de arquivos ou até saída de qualquer comando.

Leia sugerida: 12 exemplos práticos do comando linux grep

Ele usa Expressões regulares básicas Além das cordas normais como padrão de pesquisa. Nas expressões regulares básicas (BRE), meta-caracteres como: '', '','(', ')','|','+','?' Solte seu significado e são tratados como caracteres normais de corda e precisam ser escapados se quiserem ser tratados como caracteres especiais.

Leia sugerida: 11 Comandos de 'Grep' avançados nas classes de personagens e expressões de suporte

Além disso, Grep usa o algoritmo Boyer-Moore para pesquisar rapidamente qualquer string ou expressão regular.

$ grep -c 0 '(f | g) iLe' check_file $ grep -c 0 '\ (f \ | g \) iLe' check_file 
Exemplo de comando linux grep

Como aqui, quando o comando é executado sem escapar '(")' e '|' Então ele procurou pela sequência completa i.e. “(F | g) Ile” no arquivo. Mas quando os personagens especiais foram escapados, então, em vez de tratá-los como parte da corda, Grep os tratou como meta-caracteres e procurou palavras "arquivo" ou “Gile” no arquivo.

Comando egrep

Egrep ou grep -E é outra versão do Grep ou o Grep estendido. Esta versão do Grep é eficiente e rápida quando se trata de procurar um padrão de expressão regular, pois trata os meta-caracteres como é e não os substitui como cordas como em Grep, e, portanto, você é libertado do ônus de escapar como como em grep. Ele usa ERE ou o conjunto de expressão regular estendido.

Em caso de egrep, mesmo se você não escapar dos meta-caracteres, isso os trataria como caracteres especiais e os substituía por seu significado especial, em vez de tratá-los como parte de String.

$ eGREP -C 0 '(f | g) ILE' check_file $ eGREP -C 0 '\ (f \ | g \) ILE' check_file 
Exemplos de comando linux egrep

Como aqui, egrep procurou por "arquivo" string quando os meta-caracteres não foram escapados, pois isso significaria pelo significado desses caracteres. Mas, quando esses personagens foram escapados, o egrep os tratou como parte da string e pesquisou uma string completa “(F | g) Ile” no arquivo.

Comando FGREP

FGREP ou o Grep fixo ou grep -f é mais uma versão do Grep, que é rápida em pesquisar quando se trata de procurar toda a string, em vez de expressão regular, pois não reconhece as expressões regulares, nem nenhum meta-caractere. Para pesquisar qualquer string direta, esta é a versão do Grep que deve ser selecionada.

O FGREP procura por string completa e nem reconhece caracteres especiais como parte da expressão regular, mesmo que escape ou não escape.

$ fGREP -C 0 '(f | g) ILE' check_file $ fGREP -C 0 '\ (f \ | g \) ILE' check_file 
Exemplos de comando Linux FGREP

Como, quando os meta-caracteres não foram escapados, o FGREP pesquisou a string completa “(F | g) Ile” no arquivo, e quando os meta-caracteres foram escapados, o comando do FGREP pesquisou “\ (F \ | g \) ILE” Todos os personagens como estão no arquivo.

Já cobrimos alguns exemplos práticos do comando Grep, você pode lê -los aqui, se quiser obter mais do comando Grep no Linux.

Aprenda 12 exemplos práticos do comando linux grep

Conclusão

Acima destacados estão as diferenças entre 'grep', 'egrep' e 'FGREP'. Além da diferença no conjunto de expressões regulares usadas e na velocidade da execução, os parâmetros da linha de comando do REST permanecem iguais para todas as três versões do grep e mesmo em vez de "egrep" ou "FGREP", "Grep -e" ou "Grep - F ”são recomendados para serem usados.

Se você encontrar outras diferenças entre essas três versões de Grep, mencione -as em seus comentários.