Estoy tratando de entender la diferencia entre grep -e
y grep -E
. Ahora de grep manpage
tengo:
-E, --extended-regexp
Interpreta PATTERN como una expresión regular extendida (ver más abajo).
-e PATRÓN, --regexp = PATRÓN
Use PATTERN como patrón; útil para proteger patrones que comienzan con -
La explicación anterior no tiene sentido para mí.
Entonces, ¿puede alguien explicarme usando examples
cuál es la diferencia entre los dos y cuándo usar qué opción?
PS: Versión: grep (GNU grep) 2.10
-e
es realmente desambiguar cuando una expresión regular comienza con un guión. Entoncesgrep ---foo
daunrecognized option: ---foo
pero puedes decirgrep -e ---foo
grep para la expresión regular---foo
.Respuestas:
-e
es estrictamente la bandera para indicar el patrón con el que desea hacer coincidir.-E
controla si necesita escapar de ciertos caracteres especiales.man grep
lo explica-E
un poco más:fuente
echo "hello" | grep -o -e 'h|l'
obtengo salida porque|
perdió su significado especial y cuando lo hagoecho "hello" | grep -o -E 'h|l'
, obtengo la salida deseada.echo "hello" | grep -o -e 'h' -e 'l'
funcionará si quieres tirar la-E
basura en este caso.grep -e -o 'h|l'
coincidirá literalmenteh|l
mientrasgrep -e -o 'h\|l'
que coincidiráh
ol
con -E es todo lo contrarioTambién
grep -e
permite utilizar varias cadenas para buscar:'grep -e 'abc' -e 'def' -e '123'
buscará las tres cadenas:abc
así comodef
y123
.Esto funciona de manera bastante similar a
grep 'abc\|def\|123'
donde se\|
encuentra,or
pero podría ser un poco más claro de leer.Como los hechos más importantes
grep -E
ya se explican aquí, solo quiero agregar lo que resumí sobre este tema en una pregunta bastante similar: Expresión regular para encontrar caracteres dobles en Bashfuente
/extendido
Entonces, una vez más.
fuente
(
,)
,|
etc necesidad de ser escapados a tener su significado especial en expresión regular básica, pero no en extendido (donde tienen que estar escapó a ser tratado como un literal de cadena)Solo para elaborar sobre la
-e
opción.-e
a menudo es opcional:es idéntico a
a menos que, como se indicó en una Respuesta anterior y en las páginas del manual, haya múltiples patrones de búsqueda, o para proteger un patrón que comience con un guión (-).
fuente