GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux fgrep Command Tutorial für Anfänger (mit Beispielen)

Obwohl grep ein bekannter Linux-Befehl ist (wir haben ihn bereits ausführlich behandelt), wissen Sie, dass es zwei verschiedene Varianten dieses Tools gibt? Ja, das sind egrep und fgrep . In diesem Tutorial werden wir letzteres (fgrep) anhand leicht verständlicher Beispiele besprechen. Aber bevor wir das tun, ist es erwähnenswert, dass alle in diesem Tutorial erwähnten Beispiele und Anweisungen auf Ubuntu 16.04LTS getestet wurden.

Linux fgrep-Befehl

Wenn Sie sich die offizielle Dokumentation ansehen, sagt die Manpage für den grep-Befehl, dass fgrep nichts anderes als grep -F ist. Es heißt auch, dass Varianten wie fgrep und egrep nur aus Gründen der Abwärtskompatibilität bereitgestellt werden. Auf diese Details gehen wir später in diesem Tutorial ein.

In der Zwischenzeit ist hier die Syntax von fgrep (die dieselbe wie die von grep ist):

grep [OPTIONS] PATTERN [FILE...]

Und so erklärt die Handbuchseite des grep-Befehls das Tool:

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.

Die folgenden Beispiele im Q&A-Stil sollen Ihnen eine bessere Vorstellung davon vermitteln, wie fgrep funktioniert.

Q1. Wie unterscheidet sich fgrep von grep und egrep?

Der Befehl fgrep unterscheidet sich sowohl von grep als auch von egrep in dem Sinne, dass er PATTERN als eine Liste fester Zeichenfolgen (anstelle von regulären Ausdrücken) interpretiert, die durch Zeilenumbrüche getrennt sind.

Da es angeblich dasselbe wie grep -F ist, erklärt ein Experte die Option -F von grep bei 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. Wie benutzt man fgrep?

Um die Verwendung von fgrep zu verstehen, nehmen wir zunächst ein einfaches Beispiel. Angenommen, es gibt eine Datei (Datei1) mit folgendem Inhalt:

Und es gibt eine weitere Datei (words.txt), die eine Liste von Wörtern enthält, die wir in Datei1 suchen möchten.

So können Sie diese Suche mit fgrep durchführen:

fgrep -f words.txt file1

So können Sie sehen, dass die gefundenen Wörter rot hervorgehoben wurden. Nun mögen einige von Ihnen argumentieren, dass grep und egrep das auch in diesem Fall tun würden, aber wie unterscheidet sich dann fgrep?

Erstens, ja, du hast Recht. Die Befehle grep und egrep würden ebenfalls eine ähnliche Ausgabe erzeugen:

Der Unterschied wird aber deutlich, wenn file1 und words.txt folgenden Inhalt haben (Sonderzeichen innerhalb von Wörtern beachten):

Hier werden egrep und grep nicht alle Wörter finden:

Aber fgrep wird wie beabsichtigt funktionieren:

Q3. Gibt es wirklich keinen Unterschied zwischen fgrep und grep?

Nach der offiziellen Dokumentation gibt es keinen Unterschied zwischen fgrep und dem Befehl grep -F. Berichten zufolge gibt es jedoch einen großen Unterschied zwischen den beiden Tools:den von ihnen verwendeten String-Matching-Algorithmus. Während fgrep den Aho-Corasick-Algorithmus verwendet, verwendet grep eine modifizierte Version von Commentz-Walter.

"Das bedeutet, dass grep hat eine Worst-Case-O(mn)-Komplexität, während fgrep ist im schlimmsten Fall O(m+n)", sagt ein Experte in StackExchange-Foren.

Schlussfolgerung

Wie offensichtlich ist, ist der fgrep-Befehl nicht schwer zu verstehen und zu verwenden. Was den Unterschied zwischen fgrep und grep -F betrifft, denken wir, dass dieses Problem einen großen Teil der Benutzer nicht stören sollte, obwohl wir die Punkte in Q3 bereits notiert haben. Falls Sie Zweifel haben oder eine Frage zu fgrep haben, teilen Sie uns dies mit, indem Sie unten einen Kommentar hinterlassen.


Linux
  1. Linux expand Command Tutorial für Anfänger (mit Beispielen)

  2. Linux-Factor-Befehls-Tutorial für Anfänger (mit Beispielen)

  3. Linux yes Command Tutorial für Anfänger (mit Beispielen)

  4. Linux nproc Command Tutorial für Anfänger (mit Beispielen)

  5. Linux-Benutzer Befehls-Tutorial für Anfänger (mit Beispielen)

Linux sha1sum Command Tutorial für Anfänger (mit Beispielen)

Linux Look Command Tutorial für Anfänger (mit Beispielen)

Linux-Lsattr-Befehls-Tutorial für Anfänger (mit Beispielen)

Linux tload Command Tutorial für Anfänger (mit Beispielen)

Linux znew Command Tutorial für Anfänger (mit Beispielen)

Linux tr Command Tutorial für Anfänger (mit Beispielen)