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

Erklärt! Der Unterschied zwischen grep-, egrep- und fgrep-Befehlen

Ich glaube, Sie kennen den grep-Befehl bereits. Es kann vorkommen, dass Sie auf Begriffe wie egrep stoßen und fgrep in irgendeiner Internetforendiskussion und frage mich, was diese Befehle sind und ob sie mit grep verwandt sind.

In diesem Tutorial werde ich diese grep-Varianten besprechen und die Unterschiede und Ähnlichkeiten erklären.

Was ist egrep und fgrep? Was ist der Unterschied zwischen grep, egrep und fgrep?

Das e in egrep steht für extended und der f in fgrep steht für fixed. egrep erlaubt die Verwendung erweiterter Regex und fgrep erlaubt überhaupt keine Regex.

All dies wird bald mehr Sinn ergeben, wenn ich es anhand von Beispielen erkläre.

Sie wissen, dass grep mit Regex funktioniert. Aber das ist nicht die ganze Wahrheit.

Standardmäßig arbeitet der Befehl grep mit einfachen regulären Ausdrücken. Wenn Sie eine komplexere Suche wünschen, müssen Sie einen erweiterten regulären Ausdruck verwenden. Sehen Sie sich den Unterschied zwischen einfacher und erweiterter Regex an.

Der Befehl egrep ermöglicht die Verwendung erweiterter Regex.

Der fgrep-Befehl hingegen arbeitet mit einer festen Zeichenfolge anstelle einer Regex. Das bedeutet, dass es das Suchmuster so nimmt, wie es für die Suche ist, und daher schneller ist als grep.

Obwohl Sie möglicherweise immer noch egrep sehen und fgrep In freier Wildbahn ist ihr Status veraltet. Viele Systeme enthalten noch die Binärdateien für diese Varianten.

Allerdings ist es jetzt der POSIX-Standard, Standard-Grep mit speziellen Options-Flags zu verwenden (-E oder -F ). Diese Flags helfen dem Standard-Grep, die Funktionalität der jeweiligen Befehle zu emulieren.

Zusammenfassend:

  • egrep und fgrep sind veraltete Befehle und sollten vermieden werden.
  • egrep entspricht grep -E Befehl und ermöglicht die Verwendung erweiterter Regex.
  • fgrep entspricht grep -F Befehl und es verwendet eine feste Zeichenfolge für die Suche und führt daher eine schnellere Suche durch.

Den Unterschied zwischen grep, egrep und fgrep anhand eines Beispiels verstehen

Ich habe eine kurze Textdatei erstellt, um die Unterschiede zwischen diesen grep-Varianten zu demonstrieren.

[email protected]:~$ cat test.txt 
this is a tasty test

Standard grep-Befehl

Dies ist die Standardversion von grep, die für die Suche nach Mustern mit einfachen regulären Ausdrücken entwickelt wurde. Die Verwendung von grep erfordert das Escapezeichen von Metazeichen, um das erwartete Verhalten zu erzeugen.

Angenommen, ich möchte entweder nach tast suchen oder test . Folgendes kann ich verwenden:

[email protected]:~$ grep 't\(a\|e\)st' test.txt

Beachten Sie, wie Sie der Klammer entkommen müssen? Dies ist mit erweiterter Regex viel einfacher zu betrachten und zu verstehen.

Erweitertes Grep:Egrep oder grep -E

Egrep wurde erstellt, um erweitert bereitzustellen Unterstützung für Metazeichen. Das bedeutet, dass diese Sonderzeichen standardmäßig maskiert werden. Das spart Zeit und macht die Ausdrücke im Allgemeinen leichter lesbar.

Der Befehl, den ich oben verwendet habe, kann als viel lesbarer umgeschrieben werden:

[email protected]:~$ egrep 't(a|e)st' test.txt

Die egrep-Binärdatei unterstützt den { nicht durchgehend Charakter. Dies kann zu unerwartetem Verhalten führen.

Einige Versionen von egrep lassen zu, dass sie korrekt als Literalzeichen interpretiert werden, wenn sie maskiert werden (\{ ). Die bewährte Vorgehensweise zum Abgleich eines wörtlichen { ist [{] in eckige Klammern einzuschließen .

Festes Grep:Fgrep oder grep -F

Software-Profis wissen, dass die Optimierung nie ignoriert werden kann, auch wenn die Rechenleistung stark zugenommen hat. Grep ist ein sehr mächtiges Werkzeug, aber es kann manchmal Systemressourcen unnötig verbrauchen.

Daraus entstand die Idee von Fixed Grep. Diese Software ist ideal für Anwendungsfälle, in denen Sie eine exakte Zeichenfolge abgleichen müssen.

Es verfügt nicht über die leistungsstarken Ausdruckswerkzeuge der anderen grep-Varianten. Diese Schwäche ist eigentlich seine Superkraft. Dadurch wird das Tool viel schneller.

Wie ich bereits erwähnt habe, sollten Sie die Verwendung von egrep und fgrep vermeiden, da es sich um veraltete Befehle handelt. Mit grep -E und grep -F ist der Weg nach vorn.

Ich hoffe, Sie haben jetzt ein besseres Verständnis von grep, egrep und fgrep. Wenn Sie etwas hinzuzufügen haben, können Sie gerne einen Kommentar hinterlassen.


Linux
  1. Was ist der Unterschied zwischen Sudo Su – und Sudo Su –?

  2. Der Unterschied zwischen Getty und Agetty?

  3. Der Unterschied zwischen 'env' und 'printenv'?

  4. Der Unterschied zwischen Nss und Pam?

  5. Was ist der Unterschied zwischen ls und l?

Der Unterschied zwischen sudo und su erklärt

Was ist der Unterschied zwischen Linux und Unix?

Der Unterschied zwischen mehr, weniger und den meisten Befehlen

Unterschied zwischen apt und apt-get erklärt

Was ist der Unterschied zwischen Kill- und Killall-Befehlen?

Unterschied zwischen ${} und $() in Bash