¿Cuál es la diferencia entre Grep, Egrep y Fgrep en Linux?

Una de las herramientas de búsqueda de renombre en sistemas tipo Unix que se puede usar para buscar cualquier cosa, ya sea un archivo, una línea o varias líneas en el archivo, es la utilidad grep. Es muy amplia en funcionalidad, lo que se puede atribuir a la gran cantidad de opciones que admite, como: búsqueda con patrón de encordado, patrón reg-ex o reg-ex basado en perl, etc.

Diferencia Entre grep, egrep y fgrep
Diferencia Entre grep, egrep y fgrep en Linux

Debido a sus diferentes funcionalidades, tiene muchas variantes, incluyendo grep, egrep (Extended GREP), fgrep Fijo (GREP), pgrep (Proceso GREP), rgrep (Recursivo GREP) etc. Pero estas variantes tienen pequeñas diferencias con el grep original, que las ha hecho populares y para ser utilizadas por varios programadores de Linux para tareas específicas.

Lo principal que queda por investigar es cuáles son las diferencias entre las tres variantes principales, es decir, ‘grep’, ‘egrep’ y ‘fgrep’ de grep que hace que los usuarios de Linux elijan una u otra versión según los requisitos.

Algunos Meta-Caracteres especiales de grep

  1. + – Equivalentes a una o más ocurrencias de caracteres anteriores.
  2. ? – Esto denota casi 1 repetición del carácter anterior. Así: a? coincidiría con ‘a’ o ‘aa’.
  3. ( div – – Inicio de la expresión de alternancia.
  4. ) div – – Expresión de fin de alternancia.
  5. | – Coincide con cualquiera de las expresiones separadas por '|'. Como: "(a|b)cde” coincidiría con ‘abcde ‘ o’bbcde’.
  6. { – Este meta-carácter indica el inicio del especificador de rango. Como: "a{2}” coincide con » aa » en el archivo, es decir, a 2 veces.
  7. } – Este meta-carácter indica el especificador de fin de rango.

Diferencias entre grep, egrep y fgrep

Algunas diferencias principales entre grep, egrep y fgrep se pueden destacar de la siguiente manera. Para este conjunto de ejemplos, asumimos que el archivo en el que se realiza la operación es:

Comando grep de Linux
Comando grep de Linux

Comando Grep

grep o Impresión de Expresión Regular Global es el principal programa de búsqueda en sistemas Unix que puede buscar cualquier tipo de cadena en cualquier archivo o lista de archivos o incluso salida de cualquier comando.

Lectura sugerida: 12 Ejemplos prácticos del Comando grep de Linux

Utiliza Expresiones Regulares Básicas aparte de cadenas normales como patrón de búsqueda. En Expresiones Regulares Básicas (BRE), meta caracteres como: '{','}''(',')''|''+''?' pierden su sentido y se tratan como caracteres normales de la cuerda y la necesidad de ser escapado de si van a ser tratados como caracteres especiales.

Lectura sugerida: 11 Comandos avanzados ‘Grep’ en Clases de Caracteres y Expresiones de Corchete

Además, grep utiliza el algoritmo Boyer-Moore para buscar rápidamente cualquier cadena o expresión regular.

$ 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. Pero cuando se escaparon los caracteres especiales, en lugar de tratarlos como parte de una cadena, grep los trató como meta caracteres y buscó palabras "file” o "gile” en el archivo.

El comando Egrep

Egrep o grep-E es otra versión de grep o grep extendido. Esta versión de grep es eficiente y rápida cuando se trata de buscar un patrón de expresión regular, ya que trata los meta caracteres tal cual y no los sustituye como cadenas como en grep, y por lo tanto se libera de la carga de escaparlos como en grep. Utiliza ERE o el conjunto de Expresiones Regulares Extendidas.

En el caso de egrep, incluso si no escapa a los meta-caracteres, los trataría como caracteres especiales y los sustituiría por su significado especial en lugar de tratarlos como parte de una cadena.

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

Como aquí, egrep buscado "file” string cuando el meta-caracteres no eran escapado, ya que implicaría que por el significado de estos personajes. Pero, cuando estos caracteres se escaparon, egrep los trató como parte de string y buscó string completa "(f|g)ile” en el archivo.

Comando fgrep

Fgrep o el grep fijo o grep-F es otra versión de grep que es rápida en la búsqueda cuando se trata de buscar la cadena completa en lugar de la expresión regular, ya que no reconoce las expresiones regulares, ni ningún meta-carácter. Para buscar cualquier cadena directa, esta es la versión de grep que debe seleccionarse.

Fgrep busca una cadena completa y ni siquiera reconoce caracteres especiales como parte de una expresión regular, incluso si escapan o no.

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

Como, cuando meta-caracteres no eran escapado, fgrep buscado por la cadena completa "(f|g)ile” en el archivo, y cuando el meta-caracteres se escapó, entonces el fgrep comando buscado "\(f\|g\)ile” todos los caracteres en el archivo.

Ya hemos cubierto algunos ejemplos prácticos de comandos grep, puede leerlos aquí, si desea obtener más provecho de los comandos grep en Linux.

Aprenda 12 Ejemplos prácticos del Comando grep de Linux

Conclusión

Arriba se destacan las diferencias entre ‘grep’, ‘egrep’y ‘ fgrep’. Aparte de la diferencia en el conjunto de expresiones regulares utilizadas y la velocidad de ejecución, los parámetros de la línea de comandos rest permanecen iguales para las tres versiones de grep e incluso en lugar de «egrep» o «fgrep», se recomienda usar «grep-E» o «grep-F».

Posted on

Deja una respuesta

Tu dirección de correo electrónico no será publicada.