tutorial online multiple example egrep regex grep

regex - online - Diferencia entre egrep y grep.



grep-r example (2)

El comando grep se usa para encontrar las líneas que requieren patran en un archivo, tenemos metacaracteres separados al colocar ''/'

egrep es igual a grep -E, que es una expresión regular extendida que usa {,}, (,), | ,? como meta-caracteres sin dar ''/' en expresión

fgrep se usa para encontrar la cadena fija, que es igual a grep -F

test.txt
expediente
azulejo
(f | t) ile
(/ f / | / t) ile

grep "(f | t) ile" test.txt
(f | t) ile

grep "(/ f / | / t) ile" test.txt
expediente
azulejo

egrep "(f | t) ile" test.txt
expediente
azulejo

egrep "(/ f / | / t) ile" test.txt
(f | t) ile

fgrep "(f | t) ile" test.txt
(f | t) ile

fgrep "(/ f / | / t) ile" test.txt
(/ f / | / t) ile

Tengo una pregunta sobre grep y egrep en unix .

Como recientemente estoy estudiando los shell commands en unix , quiero saber cuáles son las diferencias entre grep y egrep.

Encuentro que podemos usar grep y egrep con expresiones regulares. Sin embargo, encontré algo diferente entre estos dos comandos:

Para ^ , grep y egrep tienen el mismo significado que es encontrar que las líneas contienen las cosas dadas al principio.

Sin embargo, para | , grep, sin barra diagonal delante de | , significa personaje de | , y si pongo una barra diagonal inversa delante de ella, activa el significado especial de encontrar que la línea contiene las cosas que están delante y detrás de ella. PERO, por ejemplo, es lo contrario. | tiene los últimos significados de grep y /| tiene el significado anterior de grep cuando lo usa.

¿Podría alguien más explicar amablemente por qué?


Si, podría.

El comando egrep es un atajo para el binario grep , pero con una excepción, cuando se invoca grep como egrep el binario grep activa su lógica interna como se llamaría grep -E .

La diferencia es que la opción -E permite el uso de patrones de expresión regular extendida. Te permitirá usar meta-símbolos como + ? o | . No son caracteres ordinales como solíamos tener en palabras o nombres de archivos, sino comandos de control para el binario grep . Así, | significa OR lógico.

Entonces, por ejemplo, desea listar los archivos en el directorio y ver solo aquellos que contienen las extensiones "mp4" o "avi". Con egrep harás:

ls | egrep "mp4|avi"

En este ejemplo | actúa como el comando OR que tomará para salir de ls todos los nombres que contengan cadenas "mp4" o "avi". Si lo ejecuta con el grep llano grep no obtendrá nada, porque grep no sabe algo como | comando y buscará "mp4 | avi" cadena de texto completo (con el símbolo de canalización ). Por ejemplo, si tiene el archivo |MPG|cool-guy.q2.stats en su directorio, lo obtendrá con una búsqueda simple de grep con tuberías.

Entonces, es por eso que debes escapar | en su comando egrep para lograr el mismo efecto que en grep . Escapar ocultará el significado especial de | comando para grep binario.