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

uma das ferramentas de pesquisa de renome em sistemas Unix-like que pode ser usado para procurar por qualquer coisa, seja um arquivo, ou uma linha ou várias linhas em file é um utilitário grep. É muito vasto em funcionalidade que pode ser atribuído ao grande número de opções que suporta como: pesquisar usando o padrão string, ou reg-ex padrão ou perl baseado reg-ex etc.

Diferença Entre o grep, egrep e fgrep
Diferença Entre o grep, egrep e fgrep em Linux

Devido as suas diferentes funcionalidades, ele tem muitas variantes, incluindo o grep, egrep (Extended GREP), fgrep (Fixo GREP), pgrep de Processo (GREP), rgrep (GREP Recursivo), etc. Mas essas variantes têm pequenas diferenças com o grep original, o que as tornou populares e para serem usadas por vários programadores Linux para tarefas específicas.

A principal coisa que resta investigar é quais são as diferenças entre as três principais variantes, ou seja, ‘grep’, ‘egrep’ e ‘fgrep’ do 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 carácter anterior.
  2. – isto denota quase 1 repetição do carácter anterior. Como: a? corresponderia a ‘ A ‘ou ‘ aa’.
  3. ( – início da expressão de alternação.
  4. ) – End of alternation expression.
  5. | – correspondência entre a expressão separada por '|'. Como: "(a|b)cde” corresponderia a ‘abcde’ ou ‘bbcde’.
  6. { – este meta-carácter indica o início da especificação do intervalo. Como: "a{2}” matches “aa” in file i.e. a 2 vezes.
  7. } – este meta-carácter indica um especificador de fim de gama.

diferenças entre grep, egrep e fgrep

algumas diferenças principais entre grep, egrep e fgrep podem ser realçadas da seguinte forma. Para este conjunto de exemplos estamos assumindo o arquivo em que a operação está sendo realizada para ser:

Linux Comando grep
Linux Comando grep

Comando Grep

grep ou Global Regular Expression Print é o principal programa de pesquisa em Unix como sistemas que podem procurar qualquer tipo de seqüência de caracteres em qualquer arquivo ou lista de arquivos ou até mesmo a saída de qualquer comando.

sugerido ler: 12 exemplos práticos do comando Linux grep

ele usa expressões regulares básicas além de cadeias normais como um padrão de pesquisa. Nas expressões regulares básicas( BRE), meta-caracteres como: '{','}''(',')''|''+''?' perder de vista o seu significado e são tratados como caracteres normais de cadeia e precisa ser escapado, se eles são para ser tratados como caracteres especiais.

sugerido ler: 11 Advance’ Grep ‘ Commands on Character Classes and Bracket Expressions

Also, grep uses Boyer-Moore algorithm for fast searching any string or regular expression.

$ grep -C 0 '(f|g)ile' check_file$ grep -C 0 '\(f\|g\)ile' check_file
Linux grep Command Example
Linux grep Command Example

Like here, when the command is run without escaping '(' ')' and '|' then it searched for the complete string i.e. "(f|g)ile” in the file. Mas quando os caracteres especiais havia escapado, então, em vez de tratá-las como parte da string, o grep tratados como meta-caracteres e procurou por palavras "file” ou "gile” no arquivo.

comando Egrep

Egrep ou grep-e é outra versão do grep ou do GREP extendido. Esta versão do grep é eficiente e rápido quando se trata de busca de um padrão de expressão regular como ele trata a meta-caracteres como é e não substituí-los como cadeias de caracteres, como no grep, e, portanto, você está livre do fardo de fugir delas como grep. Ele usa ERE ou o conjunto de Expressões Regulares estendidas.

no caso do egrep, mesmo que você não escape dos meta-caracteres, ele iria tratá-los como personagens especiais e substituí-los por seu significado especial em vez de tratá-los como parte da cadeia.

$ egrep -C 0 '(f|g)ile' check_file$ egrep -C 0 '\(f\|g\)ile' check_file
Linux egrep Exemplos de Comandos
Linux egrep Exemplos de Comandos

Como aqui, egrep procurado "file” string quando o meta-caracteres não escapou, como ele iria dizer o significado destes caracteres. Mas, quando esses personagens foram escapados, então egrep os tratou como parte da cadeia e procurou por uma cadeia completa "(f|g)ile” no arquivo.

comando fgrep

Fgrep ou o grep ou grep-F fixo é mais uma versão do grep que é rápida na pesquisa quando se trata de procurar por toda a cadeia de caracteres em vez da expressão regular, uma vez que não reconhece as expressões regulares, nem quaisquer meta-caracteres. Para procurar qualquer texto directo, esta é a versão do grep que deverá ser seleccionada.

Fgrep procura por texto completo e nem sequer reconhece caracteres especiais como parte da expressão regular, mesmo que escapem ou não escapem.

$ fgrep -C 0 '(f|g)ile' check_file$ fgrep -C 0 '\(f\|g\)ile' check_file
Linux fgrep Exemplos de Comandos
Linux fgrep Exemplos de Comandos

por exemplo, quando a meta-caracteres não foram escapou, fgrep procurado para a cadeia completa "(f|g)ile” no arquivo, e quando o meta-caracteres havia escapado, em seguida, o fgrep comando procurado "\(f\|g\)ile” todos os caracteres 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 realçado são as diferenças entre ‘grep’, ‘egrep’ e ‘fgrep’. Para além da diferença no conjunto de Expressões Regulares utilizadas e da velocidade de execução, os parâmetros da linha de comandos rest permanecem os mesmos 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.

Posted on

Deixe uma resposta

O seu endereço de email não será publicado.