¿Cuál es la diferencia entre grep y egrep, y cuándo debo elegir uno en lugar del otro?

Hay varios estilos para expresiones regulares:

  1. el llamado “estilo básico”, donde los personajes ? , + , { , | , ( , y ) no tienen un significado especial y coinciden. Este es el valor predeterminado para grep ;
  2. el llamado “estilo extendido” donde los caracteres anteriores (de nuevo: ? , + , { , | , ( , y ) ) tienen significados especiales. Este es el valor predeterminado para egrep , que es prácticamente lo mismo que invocar grep con la opción -E (para “extendido”);
  3. GNU grep también admite expresiones regulares similares a Perl (opción -P ) con más secuencias especiales.

En la práctica, probablemente sepa y quiera usar expresiones regulares extendidas.

grep y egrep son muy similares. La única diferencia es el tipo de expresión regular para buscar.

Creo que grep fue el primero en aparecer en UNIX, luego se desarrollaron expresiones regulares extendidas y, por lo tanto, apareció egrep .

Las implementaciones actuales de grep y egrep usan la misma biblioteca de expresiones regulares, pero con diferentes indicadores (vea man regex / REG_EXTENDED o man grep / Basic vs Extended Regular Expressions).

No importa mucho cuál de grep o egrep usar, puede obtener expresiones regulares extendidas en grep por la opción -E , o puede cambiar ligeramente la expresión regular con el mismo efecto (por ejemplo, reemplazar | por \ | ).

La única razón para preferir grep a egrep es la recomendación en la página man de grep , ya que egrep se declara obsoleto.

La página del manual dice que el uso directo de egrep y fgrep está en desuso y esos programas están disponibles solo para mantener las aplicaciones históricas que dependen de ellas ejecutándose sin cambios.
Traté de averiguar cuáles son esas aplicaciones históricas , pero no pude. Es posible que desee ver estos resultados de búsqueda e intentar averiguarlo: motor de búsqueda de código fuente [veo que glibc es uno de ellos]
También puede encontrar útil esta discusión: diferencia entre egrep y grep.

egrep (1) es en realidad un equivalente a grep -E . Este último se utiliza para pasar en un conjunto de patrones independientes delimitados por | símbolos El programa devuelve todas las líneas que coinciden con al menos uno de los patrones especificados.

Velocidad. Una búsqueda de cadena fija es más rápida que una búsqueda de expresión regular.