10 Praktische Beispiele für den Linux Grep-Befehl
Der Befehl grep bietet Zugriff auf das Dienstprogramm grep, ein leistungsstarkes Dateiverarbeitungswerkzeug zum Suchen von Mustern in Textdateien. Es hat viele praktische Anwendungsfälle und ist sicherlich einer der am häufigsten verwendeten Linux-Befehle. Dieses Handbuch zeigt einige einfache, aber nützliche Linux-Grep-Befehle, die in der Praxis verwendet werden.
Beispieldatei zur Demonstration
Wir haben eine Referenzdatei erstellt, damit die Leser grep besser verstehen können. Sie können eine Kopie dieser Datei erstellen, indem Sie den folgenden Shell-Befehl in Ihrem Terminal ausführen.
cat <<END >> test-file
This is a simple text file that contains
multiple strings as well as some telephone numbers
(555) 555-1234 (567) 666-2345
and email plus web addresses
[email protected]
https://google.com
ftp://mywebserver.com
END
1. Suchen Sie Text in Dateien
Um in einer Datei nach Textmustern zu suchen, führen Sie einfach grep gefolgt vom Musternamen aus. Geben Sie außerdem den Namen der Datei an, die den Text enthält.
grep "email" test-file
Dieser Befehl zeigt die Zeile in unserer Testdatei an , die das Wort E-Mail enthält. Sie können denselben Text auch mit grep in mehreren Dateien durchsuchen.
grep "example" /usr/share/dict/american-english /usr/share/dict/british-english
Die obigen Befehl werden alle Instanzen des Wortes Beispiel in den amerikanischen Englisch und britisch-Englisch – Wörterbuch – Dateien.
2. Finden Sie genaue Übereinstimmungswörter
Der im vorherigen Beispiel dargestellte Linux-Befehl grep listet auch Zeilen mit Teilübereinstimmungen auf. Verwenden Sie den unten angegebenen Befehl, wenn Sie nur das genaue Vorkommen eines Wortes benötigen.
grep -w "string" test-file
Die Option -w oder –word-regexp von grep beschränkt die Ausgabe auf exakte Übereinstimmungen. Grep besteht aus einigen zusätzlichen Flags, die auch mit dem Standardbefehl verwendet werden können.
3. Fallunterscheidungen ignorieren
Standardmäßig sucht grep nach Mustern, bei denen zwischen Groß- und Kleinschreibung unterschieden wird. Möglicherweise möchten Sie dies jedoch deaktivieren, wenn Sie vorher nicht wissen, in welchem Fall das Muster vorliegt.
grep -i "this" test-file
Verwenden Sie die Option -i oder –ignore-case, um die Groß- / Kleinschreibung zu deaktivieren .
4. Zählen Sie die Anzahl der Muster
Das Flag -c steht für count . Es zeigt die Anzahl der Übereinstimmungen an, die für ein bestimmtes Muster gefunden wurden. Administratoren können dies verwenden, um bestimmte Informationen über das System abzurufen.
Sie können den Befehl ps mit grep weiterleiten, um die Prozesse zu zählen, die dem aktuellen Benutzer gehören.
ps -ef | grep -c $USER
Der folgende Befehl zeigt die Anzahl der in einem Verzeichnis vorhandenen MP3- Dateien an.
ls ~/Music | grep -c .mp3
5. Zeilennummern mit Übereinstimmungen anzeigen
Möglicherweise möchten Sie die Zeilennummern finden, die eine bestimmte Übereinstimmung enthalten. Verwenden Sie dazu die Option -n oder –line-number von grep.
cat /etc/passwd | grep -n rubaiat
Diese Option ist besonders nützlich zum Debuggen von Quellcodes und zur Fehlerbehebung bei Protokolldateien. So zeigen Sie alle Nummern für Zeilen in ~ / .vimrc an , die zum Konfigurieren des Vim-Texteditors verwendet werden :
grep -n "set" ~/.vimrc
6. Suchen Sie Dateinamen mithilfe von Erweiterungen
So erhalten Sie eine Liste aller im Verzeichnis ~ / Music vorhandenen MP3- Dateien:
ls ~/Music/ | grep ".mp3"
Sie können .mp3 durch andere Erweiterungen ersetzen, um bestimmte Dateien zu finden. Der folgende Befehl listet alle PHP- Dateien auf, die im aktuellen Arbeitsverzeichnis vorhanden sind.
ls | grep ".php"
7. Suchen Sie nach Mustern in komprimierten Dateien
Der Linux-Befehl grep kann auch Muster in komprimierten Dateien finden. Dazu müssen Sie jedoch den Befehl zgrep verwenden . Erstellen Sie zunächst ein komprimiertes Archiv unserer Testdatei, indem Sie Folgendes eingeben:
gzip test-file
Jetzt können Sie im resultierenden Archiv nach Text oder anderen Mustern suchen.
zgrep email test-file.gz
8. Suchen Sie nach E-Mail-Adressen
Administratoren können mit dem Linux-Befehl grep auch E-Mail-Adressen aus Textdateien auflisten. Im folgenden Beispiel wird nach einem Muster für reguläre Ausdrücke gesucht.
grep '^[a-zA-Z0-9]+@[a-zA-Z0-9]+.[az]{2,}' test-file
Sie können reguläre Ausdrücke für ähnliche Aufgaben finden oder sie selbst erstellen, wenn Sie wissen, wie sie funktionieren.
9. Suchen Sie Telefonnummern mit Grep
Sie können reguläre grep-Ausdrücke verwenden, um Telefonnummern aus einer Textdatei herauszufiltern. Beachten Sie, dass Sie das Muster anpassen müssen, um es an die Art der benötigten Telefonnummern anzupassen.
grep '(([0-9]{3})|[0-9]{3})[ -]?[0-9]{3}[ -]?[0-9]{4}' test-file
Der oben genannte Befehl filtert zehnstellige amerikanische Telefonnummern heraus.
10. Suchen Sie URLs aus Quelldateien
Wir können die Leistung von grep nutzen, um URLs in Textdateien aufzulisten. Der unten angegebene Befehl druckt alle in der Testdatei vorhandenen URLs.
grep -E "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file
Wir verwenden wieder die Option -E für erweiterte reguläre Ausdrücke. Sie können auch den Befehl egrep verwenden , um das Hinzufügen zu vermeiden.
egrep "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file
Beherrschen des Linux Grep-Befehls
Wir haben einige nützliche Beispiele für den Linux-Befehl grep vorgestellt, mit denen Probleme der realen Welt gelöst werden können. Obwohl diese Beispiele die Leistungsfähigkeit von grep für die Textverarbeitung veranschaulichen, müssen Sie reguläre Ausdrücke beherrschen, wenn Sie mit grep überaus produktiv sein möchten.
Manchmal stoßen Linux-Benutzer auf bestimmte Situationen, in denen sie sich nicht an die verschiedenen Optionen eines Befehls erinnern können. Hoffentlich bietet Ihnen das Linux-Betriebssystem Möglichkeiten, Befehlszeilenhilfe für fast jedes Systemdienstprogramm zu erhalten.