Was ist der Unterschied zwischen Grep, Egrep und Fgrep unter Linux?

Eines der bekanntesten Suchwerkzeuge auf Unix-ähnlichen Systemen, das verwendet werden kann, um nach etwas zu suchen, sei es eine Datei, eine Zeile oder mehrere Zeilen in einer Datei, ist das grep-Dienstprogramm. Es ist sehr umfangreich in der Funktionalität, die auf die große Anzahl von Optionen zurückzuführen ist, die es unterstützt, wie: Suche mit String-Muster oder reg-ex-Muster oder Perl-basierte reg-ex usw.

Unterschied zwischen grep, egrep und fgrep
Unterschied zwischen grep, egrep und fgrep unter Linux

Aufgrund seiner unterschiedlichen Funktionalitäten hat es viele Varianten, einschließlich grep, egrep Erweitertes GREP), fgrep (Festes GREP), pgrep (Prozess-GREP), rgrep (Rekursives GREP) usw. Diese Varianten haben jedoch geringfügige Unterschiede zum ursprünglichen Grep, was sie populär gemacht hat und von verschiedenen Linux-Programmierern für bestimmte Aufgaben verwendet werden kann.

Hauptsache, die untersucht werden muss, ist, was die Unterschiede zwischen den drei Hauptvarianten sind, dh ‚grep‘, ‚egrep‘ und ‚fgrep‘ von grep, die Linux-Benutzer dazu bringen, die eine oder andere Version gemäß den Anforderungen zu wählen.

Einige spezielle Metazeichen von grep

  1. + – Entspricht einem oder mehreren Vorkommen des vorherigen Zeichens.
  2. ? – Dies bedeutet fast 1 Wiederholung des vorherigen Zeichens. Wie: a? Würde mit ‚a‘ oder ‚aa‘ übereinstimmen.
  3. ( – Beginn des Alternationsausdrucks.
  4. ) – Ende des Alternationsausdrucks.
  5. | – Entspricht einem der durch '|' getrennten Ausdrücke. Wie: "(a|b)cde” würde entweder mit ‚abcde‘ oder ‚bbcde‘ übereinstimmen.
  6. { – Dieses Metazeichen gibt den Beginn des Bereichsspezifizierers an. Wie: "a{2}” entspricht „aa“ in der Datei, dh a 2 mal.
  7. } – Dieses Metazeichen gibt das Ende des Bereichsspezifizierers an.

Unterschiede zwischen grep, egrep und fgrep

Einige Hauptunterschiede zwischen grep, egrep und fgrep können wie folgt hervorgehoben werden. Für diesen Satz von Beispielen gehen wir davon aus, dass die Datei, für die die Operation ausgeführt wird,:

Linux grep-Befehl
Linux grep-Befehl

Grep-Befehl

grep oder Global Regular Expression Print ist das Hauptsuchprogramm auf Unix-ähnlichen Systemen, das nach jedem Typ suchen kann von String auf jede Datei oder Liste von Dateien oder sogar Ausgabe eines Befehls.

Empfohlene Lektüre: 12 Praktische Beispiele für Linux grep Befehl

Es verwendet grundlegende reguläre Ausdrücke abgesehen von normalen Zeichenfolgen als Suchmuster. In einfachen regulären Ausdrücken (BRE) können Metazeichen wie: '{','}''(',')''|''+''?' verlieren ihre Bedeutung und werden als normale Zeichen von Strings behandelt und müssen maskiert werden, wenn sie als sonderzeichen.

Empfohlene Lektüre: 11 Erweiterte ‚Grep‘-Befehle für Zeichenklassen und Klammerausdrücke

Außerdem verwendet grep den Boyer-Moore-Algorithmus für die schnelle Suche nach Zeichenfolgen oder regulären Ausdrücken.

$ grep -C 0 '(f|g)ile' check_file$ grep -C 0 '\(f\|g\)ile' check_file
Linux grep Command Example
Linux grep Command Example

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. Wenn die Sonderzeichen jedoch maskiert wurden, behandelte grep sie nicht als Teil einer Zeichenfolge, sondern als Metazeichen und suchte in der Datei nach Wörtern "file” oder "gile”.

Egrep Befehl

Egrep oder grep -E ist eine andere Version von grep oder dem erweiterten grep. Diese Version von grep ist effizient und schnell, wenn es darum geht, nach einem Muster für reguläre Ausdrücke zu suchen, da sie Metazeichen so behandelt, wie sie sind, und sie nicht wie in grep als Zeichenfolgen ersetzt. Es verwendet ERE oder den erweiterten Satz regulärer Ausdrücke.

Im Falle von egrep würden sie, selbst wenn Sie die Metazeichen nicht maskieren, als Sonderzeichen behandelt und durch ihre besondere Bedeutung ersetzt, anstatt sie als Teil einer Zeichenfolge zu behandeln.

$ egrep -C 0 '(f|g)ile' check_file$ egrep -C 0 '\(f\|g\)ile' check_file
Beispiele für Linux-Egrep-Befehle
Beispiele für Linux-Egrep-Befehle

Wie hier suchte egrep nach "file” string, wenn die Metazeichen nicht maskiert wurden, wie es durch die Bedeutung dieser Zeichen bedeuten würde. Wenn diese Zeichen jedoch maskiert wurden, behandelte egrep sie als Teil von string und suchte in der Datei nach der vollständigen Zeichenfolge "(f|g)ile” .

fgrep Befehl

Fgrep oder das feste grep oder grep -F ist eine weitere Version von grep, die schnell sucht, wenn es darum geht, nach der gesamten Zeichenfolge anstelle von regulären Ausdrücken zu suchen, da sie die regulären Ausdrücke nicht erkennt, weder irgendwelche Metazeichen. Für die Suche nach einem direkten String ist dies die Version von grep, die ausgewählt werden sollte.

Fgrep sucht nach einer vollständigen Zeichenfolge und erkennt Sonderzeichen nicht einmal als Teil eines regulären Ausdrucks, selbst wenn sie maskiert oder nicht maskiert sind.

$ fgrep -C 0 '(f|g)ile' check_file$ fgrep -C 0 '\(f\|g\)ile' check_file
Beispiele für Linux-fgrep-Befehle
Beispiele für Linux-fgrep-Befehle

Wenn Metazeichen nicht maskiert wurden, fgrep suchte nach der vollständigen Zeichenfolge "(f|g)ile” in der Datei, und wenn die Metazeichen maskiert wurden, suchte der Befehl fgrep nach "\(f\|g\)ile” alle Zeichen wie in der Datei.

Wir haben bereits einige praktische Beispiele für grep-Befehle behandelt, die Sie hier lesen können, wenn Sie mehr aus dem grep-Befehl unter Linux herausholen möchten.

Erfahren Sie 12 praktische Beispiele für Linux grep Befehl

Fazit

Oben hervorgehoben sind die Unterschiede zwischen ‚grep‘, ‚egrep‘ und ‚fgrep‘. Abgesehen von den Unterschieden in der Menge der verwendeten regulären Ausdrücke und der Ausführungsgeschwindigkeit bleiben die Rest-Befehlszeilenparameter für alle drei Versionen von grep gleich und es wird empfohlen, anstelle von „egrep“ oder „fgrep“ „grep -E“ oder „grep -F“ zu verwenden.

Posted on

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.