Differenza tra egrep e grep

Ho una domanda su grep e egrep in unix .

Mentre sto studiando i shell commands della shell commands in unix , voglio sapere quali sono le differenze tra grep e egrep.

Trovo che possiamo usare grep ed egrep con espressioni regolari. Tuttavia, ho trovato qualcosa di diverso tra questi due comandi:

Per ^ , grep ed egrep hanno lo stesso significato che sta trovando le linee contengono gli oggetti dati all’inizio.

Tuttavia, per | , grep, senza barra posteriore di fronte a | , significa carattere di | e se metto una barra indietro di fronte ad essa, si accende il significato speciale di trovare la linea che contiene sia la roba davanti ad essa che dietro di essa. MA, per egrep, è il contrario. | ha il secondo significato di grep e \| ha il precedente significato di grep quando lo usa.

Qualcuno potrebbe gentilmente spiegare perché?

Si Potrei.

Il comando egrep è scorciatoia per grep binario, ma con una eccezione, quando grep viene invocato come egrep il binario grep triggers la sua logica interna come verrebbe chiamata grep -E .

La differenza è che l’opzione -E consente l’uso di pattern regexp estesi. Ti permetterà di usare questi meta-simboli come + ? o | . Non sono caratteri ordinali come quelli che usavamo in parole o nomi di file, ma comandi di controllo per lo stesso binario di grep . Quindi, | significa OR logico.

Ad esempio, si desidera elencare i file nella directory e vedere solo quelli che contengono estensioni “mp4” o “avi”. Con egrep farai:

ls | egrep "mp4|avi"

In questo esempio | agisce come il comando OR che prenderà in uscita da ls tutti i nomi che contengono stringhe “mp4” o “avi”. Se lo esegui con il comando grep chiaro non otterrai nulla, perché grep non sa nulla come | comando e cercherà “mp4 | avi” intera stringa di testo (con simbolo pipe ). Ad esempio, se hai il file |MPG|cool-guy.q2.stats nella tua directory, lo otterrai con la semplice ricerca di grep con pipe.

Quindi, ecco perché dovresti scappare | nel tuo comando egrep per ottenere lo stesso effetto di grep . Escaping eliminerà il significato speciale di | comando per grep binary.

il comando grep è usato per trovare le linee che hanno richiesto patran in un file, abbiamo meta-caratteri separati posizionando ‘\’

egrep è uguale a grep -E, che è un’espressione regolare estesa che usa {,}, (,), | ,? come meta-caratteri senza dare ‘\’ nell’espressione

fgrep è usato per trovare la stringa fissa, che è uguale a grep -F

test.txt
file
piastrella
(F | t) ile
(\ F \ | \ t) ile

grep “(f | t) ile” test.txt
(F | t) ile

grep “(\ f \ | \ t) ile” test.txt
file
piastrella

egrep “(f | t) ile” test.txt
file
piastrella

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