Grep steht für Global Regular Expression Print. Es ist ein nützlicher Befehl und wird häufig von Linux-Systemingenieuren verwendet, wenn eine Zeichenfolge oder Muster mit regulären Dateien und im System gesucht werden.
In diesem Artikel werde ich die Verwendung des grep-Befehls anhand einer großen Anzahl von Beispielen demonstrieren. Ich habe alle Befehle und Beispiele auf einem Debian 10-Rechner getestet.
Voraussetzung
Sie benötigen einen einzelnen Debian 10-Rechner mit Root-Rechten.
Grep-Befehl unter Debian 10 installieren
Standardmäßig ist grep auf den meisten Systemen einschließlich Debian 10 installiert. Wenn es nicht installiert ist, öffnen Sie das Terminal und geben Sie den folgenden Befehl mit Root-Rechten ein.
apt-get install grep
Wenn Sie um eine Bestätigung gebeten werden, drücken Sie y und geben Sie dann auf der Tastatur ein. Warten Sie, bis die Installation abgeschlossen ist.
Da grep bereits auf meinem Rechner installiert war, überprüfen Sie den obigen Screenshot. Lassen Sie uns seine Version überprüfen, indem Sie den folgenden Befehl auf dem Terminal ausführen.
grep --version
Es sollte auch die Version zusammen mit anderen Details zurückgeben, wie unten gezeigt.
Grep-Befehl verwenden
Sobald wir den grep-Befehl auf unserer Maschine verfügbar haben, können wir damit spielen.
Durchsuchen einer bestimmten Datei oder eines bestimmten Verzeichnisses in Ihrem System
Wenn Sie eine bestimmte Datei in Ihrem System suchen oder finden möchten, sollte die Syntax des Befehls wie folgt lauten.
ls -l
Ich möchte in /etc/ nach einem Netzwerkverzeichnis suchen. Der vollständige Befehl sollte wie folgt aussehen.
ls -l /etc/ | grep -i "network"
Die Option „i“ ignoriert die Groß-/Kleinschreibung. Daher sollte es Netzwerk, Netzwerk oder NETZWERK als ähnlich behandeln.
Unten ist die Beispielausgabe.
Angenommen, ich möchte eine „interfaces.d“-Datei suchen, die sich unter /etc/network/ befindet, müssen Sie den folgenden Befehl ausführen.
ls -l /etc/network/ | grep -i "interfaces.d"
Das gesuchte Wort muss in doppelte Anführungszeichen gesetzt werden, wenn es Leerzeichen enthält. Angenommen, wir suchen nach „network daemon“, der obige Befehl sollte wie folgt aussehen.
ls -l /etc/network/ | grep -i „Schnittstellen-Daemon“
Mit grep nach einem vollständigen Wort suchen
Sie haben vielleicht bemerkt, dass grep alle möglichen Ergebnisse zurückgegeben hat, die „Netzwerk“ enthalten, z. networks, networked, networking oder abcnetworking usw. Wenn Sie Ihre Suche auf dieses bestimmte Wort beschränken möchten, müssen Sie die Option -w wie folgt verwenden.
ls -l /etc/ | grep -i -w network
Unten ist die Beispielausgabe.
Suchen eines bestimmten Textes in einer Datei
Wir haben einen Fall, in dem Sie eine große Datei haben und nach einem bestimmten Text suchen möchten. Die Syntax des Befehls sollte wie folgt lauten.
grep – i „textyouwanttosearch“ „filenameandpath“
Angenommen, ich möchte das Wort „Fuchs“ in test.txt suchen, das sich in meinem aktuellen Verzeichnis befindet. Führen Sie den folgenden Befehl auf einem Terminal aus.
grep -i "fox" test.txt
Unten sehen Sie die Beispielausgabe, die nur die Zeilen der Datei zurückgibt, die das Wort „Fuchs“ enthalten.
Durchführen einer rekursiven Suche (Suchen in mehreren Dateien)
Wenn Sie einen Text in einer großen Anzahl von Dateien und Unterverzeichnissen in einem Verzeichnis suchen möchten, können Sie mit der Option -r rekursiv suchen.
grep -i -r "fox"
Unten ist die Beispielausgabe, die zeigt, dass das Wort Fuchs sowohl in den Dateien test.txt als auch in der Datei tree.txt in der angezeigten Zeile vorhanden ist.
Sie können auch einen Verzeichnispfad angeben und es wird alle Dateien in diesem Verzeichnis und seinen Unterverzeichnissen durchsuchen.
Angenommen, ich möchte rekursiv nach dem Text „interfaces“ in /etc/ und seinen Unterverzeichnissen suchen. Der Befehl sollte wie folgt ausgeführt werden.
grep -i -r interfaces /etc/
Unten ist die Beispielausgabe.
Suche nach zwei verschiedenen Wörtern mit einem einzigen grep-Befehl
Sie können zwei verschiedene Wörter mit einem einzigen egrep-Befehl (der eine Variation von grep ist) wie folgt suchen. Angenommen, ich möchte mit der Option -r in mehreren Dateien nach einem vollständigen Wort „Fuchs“ und „Lazy“ suchen. Sie müssen den folgenden Befehl auf dem Terminal ausführen.
egrep -w -r "fox|lazy"
Unten ist die Beispielausgabe.
Zeile nummerieren, die zum Text passt
Eine weitere nützliche Option ist das -n, das die Zeilen nummeriert, die zum Text passen. Das folgende Beispiel veranschaulicht, wie die Option -n verwendet wird.
grep -i -n "fox" test.txt
Unten ist die Beispielausgabe, welche Zeilennummern mit dem Wort „Fuchs“ übereinstimmen.
Umkehrung der Suche
Das ist das Gegenteil von dem, was wir oben getan haben. Wenn Sie einen Text zurückgeben möchten, der das angegebene Wort nicht enthält, können Sie die Option -v verwenden.
Unten ist das Beispiel, das die Verwendung der Option -v demonstriert.
grep -v -i "fox" test.txt
Unten ist die Beispielausgabe.
Alle oben genannten Optionen (-n usw.) können auch mit der Option -v angewendet werden.
Spiele zählen
Wenn Sie nur die Anzahl der Übereinstimmungen mit einem bestimmten Text zählen möchten, können Sie die Option -c verwenden.
Zählen wir das Wort „Fuchs“ in test.txt, das sich im aktuellen Verzeichnis befindet. Führen Sie den folgenden Befehl auf dem Terminal aus.
grep -i -c fox test.txt
Unten ist die Beispielausgabe nach Ausführung des obigen Befehls, die zeigt, dass das Wort Fuchs in der Datei test.txt dreimal übereinstimmt.
Anzeige der Dateinamen, die zum jeweiligen Text passen
Wenn Sie die Dateien herausfinden möchten, die Ihr bestimmtes Wort enthalten, können Sie die Option -l zusammen mit -r wie folgt verwenden. Angenommen, alle Dateien befinden sich in Ihrem aktuellen Verzeichnis und das spezifische Wort, nach dem Sie suchen oder das Sie finden, ist „Fuchs“.
grep -i -r -l fox
Unten ist die Beispielausgabe, die zeigt, dass das Wort fox in test.txt und in einem Unterverzeichnis und einer Datei asif.txt vorhanden ist
Nur den übereinstimmenden Text anzeigen
Standardmäßig zeigt grep die gesamte Zeile an, die Ihrem gewünschten Text oder Wort entspricht. Wenn Sie möchten, dass grep Ihnen die übereinstimmenden Wörter anzeigt, können Sie die Option -o wie folgt verwenden.
grep -i -o fox test.txt
Unten ist die Beispielausgabe.
Anzeige der Zeilen, die mit einem oder mehreren bestimmten Wörtern beginnen
Wenn Sie alle Zeilen abrufen möchten, die mit einem oder mehreren bestimmten Wörtern beginnen, können Sie den ^-Operator wie folgt verwenden.
Angenommen, Sie möchten alle Zeilen zurückgeben, die mit „unix“ beginnen, und die Datei log.txt befindet sich in Ihrem aktuellen Verzeichnis.
Führen Sie den folgenden Befehl auf dem Terminal aus.
grep -i "^unix" log.txt
Unten ist die Beispielausgabe.
Anzeige der Zeilen, die mit dem/den bestimmten Wort(en) enden
Wenn Sie alle diese Zeilen aus einer Datei zurückgeben möchten, die mit dem/den bestimmten Wort(en) endet, können Sie den $-Operator wie folgt verwenden. Angenommen, das Wort ist „linux“ und die zu durchsuchende Datei ist rev.txt, die sich in Ihrem aktuellen Verzeichnis befindet.
Führen Sie den folgenden Befehl auf dem Terminal aus.
grep -i "linux$" rev.txt
Unten ist die Beispielausgabe.
Schlussfolgerung
Das war also mein Tutorial zur Verwendung des grep-Befehls. Ich habe die meisten grep-Optionen demonstriert, die am häufigsten verwendet werden und die Sie möglicherweise in Ihrer täglichen Arbeit benötigen. Es gibt einige Variationen des grep-Befehls, einschließlich zgrep usw. Sie können sie selbst erkunden.