GNU/Linux >> Linux Esercitazione >  >> Linux

Esercitazione sui comandi fgrep di Linux per principianti (con esempi)

Sebbene grep sia un noto comando Linux (ne abbiamo già parlato in dettaglio), sai che esistono due diverse varianti di questo strumento? Sì, questi sono egrep e fgrep . In questo tutorial, discuteremo di quest'ultimo (fgrep) usando esempi di facile comprensione. Ma prima di farlo, vale la pena ricordare che tutti gli esempi e le istruzioni menzionati in questo tutorial sono stati testati su Ubuntu 16.04LTS.

Comando Linux fgrep

Se dai un'occhiata alla documentazione ufficiale, la pagina man del comando grep dice che fgrep non è altro che grep -F. Dice anche che varianti come fgrep ed egrep sono fornite solo per la compatibilità con le versioni precedenti. Toccheremo questi dettagli più avanti in questo tutorial.

Nel frattempo, ecco la sintassi di fgrep (che è la stessa di grep):

grep [OPTIONS] PATTERN [FILE...]

Ed ecco come la pagina man del comando grep spiega lo strumento:

grep searches the named input FILEs for lines containing a match to the given PATTERN. If no files 
are specified, or if the file “-” is given, grep searches standard input. By default, grep prints
the matching lines.

I seguenti esempi in stile domande e risposte dovrebbero darti un'idea migliore di come funziona fgrep.

Q1. In che modo fgrep è diverso da grep ed egrep?

Il comando fgrep differisce sia da grep che da egrep nel senso che interpreta PATTERN come un elenco di stringhe fisse (invece di espressioni regolari), separate da newline.

Poiché si dice che sia uguale a grep -F, ecco come un esperto ha spiegato l'opzione -F di grep su StackExchange:

The -F switch switches grep into a different mode where it accepts a pattern to match, but then 
splits that pattern up into one search string per line and does an OR search on any of the strings
without doing any special pattern matching.

Q2. Come usare fgrep?

Per comprendere l'utilizzo di fgrep, prendiamo prima un esempio di base. Supponiamo che ci sia un file (file1) che contenga i seguenti contenuti:

E c'è un altro file (words.txt) che contiene un elenco di parole che vogliamo cercare in file1.

Quindi, ecco come puoi usare fgrep per eseguire questa ricerca:

fgrep -f words.txt file1

Quindi puoi vedere che le parole che sono state trovate sono state evidenziate in rosso. Ora alcuni di voi potrebbero obiettare che è ciò che farebbero anche grep ed egrep in questo caso, quindi in che cosa differisce fgrep?

Innanzitutto sì, hai ragione. Anche il comando grep ed egrep produrrebbe un output simile:

Ma la differenza sarà evidente nel caso in cui file1 e words.txt contengano i seguenti contenuti (osservare i caratteri speciali all'interno delle parole):

Qui, egrep e grep non riusciranno a trovare tutte le parole:

Ma fgrep funzionerà come previsto:

Q3. Non c'è davvero alcuna differenza tra fgrep e grep?

Seguendo la documentazione ufficiale, non c'è alcuna differenza tra fgrep e il comando grep -F. Tuttavia, secondo quanto riferito, c'è una grande differenza tra i due strumenti:l'algoritmo di corrispondenza delle stringhe che usano. Mentre fgrep utilizza l'algoritmo Aho-Coraick, grep utilizza una versione modificata di Commentz-Walter.

"Ciò significa che grep ha una complessità O(mn) nel caso peggiore mentre fgrep è nel peggiore dei casi O(m+n)", afferma un esperto sui forum StackExchange.

Conclusione

Come evidente, il comando fgrep non è difficile da capire e da usare. Per quanto riguarda la differenza tra fgrep e grep -F, mentre abbiamo già notato i punti nel terzo trimestre, pensiamo che questo problema non dovrebbe infastidire un'ampia sezione di utenti. In caso di dubbio o di una domanda relativa a fgrep, condividila con noi lasciando un commento qui sotto.


Linux
  1. Linux expand Command Tutorial per principianti (con esempi)

  2. Tutorial sui comandi di Linux factor per principianti (con esempi)

  3. Linux yes Command Tutorial per principianti (con esempi)

  4. Esercitazione sui comandi nproc Linux per principianti (con esempi)

  5. Tutorial sui comandi di sospensione di Linux per principianti (con esempi)

Linux sha1sum Command Tutorial per principianti (con esempi)

Tutorial sui comandi per l'aspetto di Linux per principianti (con esempi)

Esercitazione sui comandi lsattr Linux per principianti (con esempi)

Linux tload Command Tutorial per principianti (con esempi)

Linux znew Command Tutorial per principianti (con esempi)

Linux tr Command Tutorial per principianti (con esempi)