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