Uno dei rinomati strumenti di ricerca su sistemi Unix-like che possono essere utilizzati per cercare qualsiasi cosa che si tratti di un file, o una linea o più righe nel file è grep utility. È molto vasto in funzionalità che può essere attribuito al gran numero di opzioni che supporta come: ricerca usando string pattern, o reg-ex pattern o reg-ex basato su perl ecc.

a Causa di diverse funzionalità, ha molte varianti tra cui grep, egrep (Extended GREP), fgrep Fissa (GREP), pgrep (Processo GREP) rgrep (GREP Ricorsivo) etc. Ma queste varianti hanno piccole differenze rispetto all’originale grep che le ha rese popolari e utilizzate da vari programmatori Linux per compiti specifici.
La cosa principale che rimane da indagare è quali sono le differenze tra le tre varianti principali, cioè ‘grep’, ‘eep’ e ‘fgrep’ di grep che fa sì che gli utenti Linux scelgano l’una o l’altra versione secondo il requisito.
Alcuni Meta-caratteri speciali di grep
-
+
– Equivalenti a una o più occorrenze del carattere precedente. -
?
– Questo denota quasi 1 ripetizione del carattere precedente. Come:a?
Corrisponderebbe a ‘a’ o ‘aa’. -
(
– Inizio dell’espressione di alternanza. -
)
– Fine dell’espressione di alternanza. -
|
– Corrisponde a una delle espressioni separate da'|'
. Come:"(a|b)cde”
corrisponderebbe a ‘abcde’ o ‘bbcde’. -
{
– Questo meta-carattere indica l’inizio dello specificatore di intervallo. Come:"a{2}”
corrisponde a” aa ” nel file cioè a 2 volte. -
}
– Questo meta-carattere indica l’identificatore di fine intervallo.
Differenze tra grep ,greep e fgrep
Alcune differenze principali tra grep, eep e fgrep possono essere evidenziate come segue. Per questo insieme di esempi stiamo assumendo il file su cui viene eseguita l’operazione:

Comando Grep
grep o Globale Espressione Regolare di Stampa è il principale programma di ricerca su Unix come sistemi di ricerca per qualsiasi tipo di stringa su qualsiasi file o l’elenco dei file o anche di uscita di qualsiasi comando.
Lettura suggerita: 12 Esempi pratici di comando grep Linux
Utilizza espressioni regolari di base oltre alle normali stringhe come modello di ricerca. Nelle espressioni regolari di base (BRE), i meta-caratteri come: '{','}'
'(',')'
'|'
'+'
'?'
perdono il loro significato e sono trattati come dei normali caratteri della stringa e la necessità di essere scappato, se vogliono essere trattati come caratteri speciali.
Lettura consigliata: 11 Advance ‘Grep’ Comandi su classi di caratteri ed espressioni Parentesi
Inoltre, grep utilizza l’algoritmo Boyer-Moore per la ricerca veloce qualsiasi stringa o espressione regolare.
$ grep -C 0 '(f|g)ile' check_file$ grep -C 0 '\(f\|g\)ile' check_file

Like here, when the command is run without escaping '(' ')'
and '|'
then it searched for the complete string i.e. "(f|g)ile”
in the file. Ma quando i caratteri speciali sono stati sfuggiti, invece di trattarli come parte della stringa, grep li ha trattati come meta-caratteri e ha cercato le parole "file”
o "gile”
nel file.
Commandep Comando
Eep o grep-E è un’altra versione di grep o il grep esteso. Questa versione di grep è efficiente e veloce quando si tratta di cercare un modello di espressione regolare in quanto tratta i meta-caratteri così come sono e non li sostituisce come stringhe come in grep, e quindi sei liberato dall’onere di sfuggirli come in grep. Usa ERE o il set di espressioni regolari estese.
In caso digreep, anche se non si sfuggono ai meta-caratteri, li tratterebbe come caratteri speciali e li sostituirà per il loro significato speciale invece di trattarli come parte di string.
$ egrep -C 0 '(f|g)ile' check_file$ egrep -C 0 '\(f\|g\)ile' check_file

Come qui, egrep cercato "file”
stringa, quando i meta-caratteri non erano sfuggiti, come sarebbe dire il significato di questi personaggi. Ma, quando questi caratteri sono stati sfuggiti, eep li ha trattati come parte di string e ha cercato la stringa completa "(f|g)ile”
nel file.
Comando fgrep
Fgrep o il grep fisso o grep-F è ancora un’altra versione di grep che è veloce nella ricerca quando si tratta di cercare l’intera stringa invece di espressione regolare in quanto non riconosce le espressioni regolari, né alcun meta-caratteri. Per cercare qualsiasi stringa diretta, questa è la versione di grep che dovrebbe essere selezionata.
Fgrep cerca una stringa completa e non riconosce nemmeno i caratteri speciali come parte dell’espressione regolare anche se è sfuggito o meno.
$ fgrep -C 0 '(f|g)ile' check_file$ fgrep -C 0 '\(f\|g\)ile' check_file

Come, quando meta-caratteri non erano sfuggiti, fgrep cercato la stringa completa "(f|g)ile”
nel file, e quando la meta-caratteri erano sfuggiti, quindi il fgrep comando cercato "\(f\|g\)ile”
tutti i personaggi, come è nel file.
Abbiamo già trattato alcuni esempi pratici di comando grep che puoi leggere qui, se vuoi ottenere di più dal comando grep in Linux.
Impara 12 esempi pratici di comando Linux grep
Conclusione
Sopra evidenziate sono le differenze tra ‘grep’, ‘eep’ e ‘fgrep’. A parte la differenza nel set di espressioni regolari utilizzate e la velocità di esecuzione, i parametri della riga di comando rest rimangono gli stessi per tutte e tre le versioni di grep e anche al posto di “eep” o “fgrep”, “grep-E” o “grep-F” sono raccomandati per essere usati.