Eine der am häufigsten verwendeten Operationen im Linux-Terminal ist das Durchsuchen von Textdateien und das Filtern von Standardausgaben oder Fehlerströmen. Linux bietet ein großartiges Tool, mit dem wir diese Aufgabe problemlos lösen können – grep. In diesem Artikel behandeln wir die häufigsten Anwendungsfälle für grep, die Ihren Alltag definitiv vereinfachen werden.
Was ist grep
Grep steht für Global Regular Expression Print. Dies ist ein sehr praktisches Dienstprogramm, wenn es darum geht, eine große Menge von Textdateien (z. B. Protokolle) zu durchsuchen.
Grep ist der nützlichste Befehl unter Linux/Unix für Systemadministratoren, Entwickler und DevOps-Ingenieure. Der Hauptzweck dieses Tools besteht darin, in einer bestimmten Datei nach Zeichenfolgen oder Mustern zu suchen oder die Ausgabe anderer Befehle zu filtern.
Dieses oben erwähnte Muster wird als regulärer Ausdruck bezeichnet.
Der Befehl grep gibt eine Zeile mit der Zeichenfolge an das Terminal aus, wenn er eine Übereinstimmung mit der Suchanfrage findet.
Es gibt viele verschiedene Beispiele für die Verwendung von grep, also schauen wir uns an, wie und wann Sie es verwenden können.
Installation von grep unter Linux
Normalerweise ist grep in den meisten Linux-Systemen und sogar kleinen Docker-Containern installiert. Aber wenn Sie es nicht auf Ihrem System installiert haben, können Sie es zum Beispiel mit dem folgenden Befehl tun:
apt-get updateapt-get install -y grep
Beispiele für die Nutzung von grep
In diesem Teil des Artikels behandeln wir die häufigsten Beispiele für die Verwendung von grep.
Eine Befehlsausgabe filtern
Sie können den grep-Befehl zum Suchen und Drucken jeder Zeile aus jeder Linux-Befehlsausgabe verwenden, die mit dem angegebenen Muster übereinstimmt.
In diesem Beispiel prüfen wir, welche Python 3-Pakete wir in unserem Ubuntu-System haben:
dpkg -l | grep python3
In diesem Beispiel:
dpkg -l
druckt alle installierten Paketegrep
filtertdpkg
nur Strings ausgeben und drucken, diepython3
enthalten Zeichenfolge
Auf die gleiche Weise können Sie die CPU-Modellinformationen anzeigen, zum Beispiel:
grep -i 'Model' /proc/cpuinfo
Suchzeichenfolge innerhalb einer Datei
In diesem Beispiel sucht der Befehl grep nach der Zeichenfolge „root“ in der Datei „/etc/passwd“ und gibt sie aus, wenn die Zeichenfolge gefunden wurde.
Normalerweise verwenden wir diesen Befehl, um zu prüfen, ob das System über ein Benutzerkonto mit dem angegebenen Namen verfügt (Beispiel:root in out):
grep root /etc/passwd
Mehrere Dateien durchsuchen
Um die Zeichenfolge in mehreren Dateien gleichzeitig herauszufinden, verwenden Sie den Befehl grep und geben Sie die Dateinamen in einer einzigen Zeile an. Sie können reguläre Ausdrücke verwenden, um Dateien nach Masken zu durchsuchen.
Laden wir das öffentlich zugängliche Apache access.log herunter:
mkdir -p /var/log/httpd
cd /var/log/httpd
wget http://www.almhuette-raith.at/apache-log/access.log
Lassen Sie uns nun diese Datei in mehrere Dateien um 10000 Zeilen in Datei aufteilen:
Jetzt können wir die Dateien nach 500 HTTP-Serverfehler durchsuchen:
grep ' 500 ' xac xad
Um in allen Dateien innerhalb des aktuellen Arbeitsverzeichnisses zu suchen, verwenden Sie *
nach dem Muster.
Im folgenden Beispiel sucht der Befehl grep in allen Dateien nach 500 Serverfehlern:
grep ' 500 ' *
Ganzwortsuche
Mit dem -w
Option im Befehl grep können Sie nach Dateien suchen, die ein Wortmuster enthalten:
grep -w 'Windows XP' *
Suche ohne Berücksichtigung der Groß-/Kleinschreibung
Der Befehl grep ist intelligent genug, um uns die Suche unabhängig von der Groß- und Kleinschreibung des Suchmusters zu ermöglichen.
Dazu müssen wir -i
verwenden als Argument.
Hier ist das gleiche Beispiel, aber jetzt filtern wir ohne Berücksichtigung der Groß-/Kleinschreibung:
grep -i -w 'windows xp' *
Ausgabedateien mit Suchmuster
Sie können -l
verwenden Option zum Anzeigen aller Dateinamen, die das gesuchte Muster enthalten:
grep -l -i -w 'windows xp' *
Treffer pro Datei zählen
Wenn Sie wissen möchten, wie oft Ihr Muster in allen Dateien übereinstimmt, fügen Sie den -c
hinzu Möglichkeit:
grep -c -i -w 'windows xp' *
Anzahl der Zeilen vor dem gesuchten Muster
Um die Zeilen in einer Datei vor dem Suchmuster anzuzeigen, fügen Sie -B
hinzu Argument, gefolgt von der Anzahl der Zahlen, die Sie aus der Datei abrufen möchten:
grep -B 3 -i -w 'windows xp' xaf
Anzahl der Zeilen nach dem gesuchten Muster
Ebenso können Sie -A
verwenden Argument, um die Anzahl der Zeilen anzugeben, die nach dem gesuchten Muster gedruckt werden sollen:
grep -A 3 -i -w 'windows xp' xaf
Zeilennummer für Suchmusterübereinstimmung drucken
Um die Zeilennummer des gefundenen Suchmusters anzuzeigen, können Sie -n
verwenden Argument:
grep -n -i -w 'windows xp' xaf
Übereinstimmung mit dem Anfang der Zeichenfolge
Im folgenden Beispiel verwenden wir den grep-Befehl, um alle Anfragen zu finden, die von der spezifischen IP-Adresse stammen.
Alle gesuchten Zeilen sollten mit 5.34.180.192
beginnen Laufzeit.
grep "^5.34.180.192" xaf
Übereinstimmung des Endes der Zeichenfolge
Fügen Sie $
hinzu bis zum Ende des Musters, um Zeilen zu finden, die mit der gesuchten Zeichenfolge enden:
grep "Chrome/62\" \"-\"$" xaf
Sobald unser Suchstring "
enthält Symbole, maskieren wir sie mit \
.
Mehrere Mustersuche
Wir können grep verwenden, um mehrere Muster gleichzeitig zu durchsuchen. Fügen Sie -e
hinzu Argument vor jedem Suchmuster:
grep -e "Chrome/62\" \"-\"$" -e "15/Mar/2021:08:35:23" xaf
Hier suchen wir alle Zeichenfolgen in der Datei, die auf Chrome/62" "-"
enden UND spezifisches Datum und Uhrzeit enthalten 15/Mar/2021:08:35:23
.
Ausgabefarbe ändern
Da die farbige Ausgabe die Lesbarkeit erhöht, können Sie sie in Ihre Lieblingsfarbe ändern, indem Sie GREP_COLOR
einstellen Umgebungsvariable:
GREP_COLOR='1;35' grep --color=always 'admin' /etc/passwd
Weitere Informationen über die GREP_COLOR-Variable finden Sie in der offiziellen grep-Dokumentation.
Zusammenfassung
Der Befehl grep ist äußerst nützlich, wenn es darum geht, den Inhalt der Textdateien oder das Ausgabeergebnis von Befehlen zu filtern. In diesem Artikel haben wir die am häufigsten verwendeten grep-Befehle behandelt, die Ihre Shell-Erfahrung optimieren werden.
Wir hoffen, dass dieser Artikel für Sie nützlich war. Wenn ja, helfen Sie uns bitte, es in der Welt zu verbreiten.