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.