Website-Suche

So verwenden Sie den Grep-Befehl unter Linux [12 nützliche Beispiele]


Standen Sie schon einmal vor der Aufgabe, in einer Datei nach einer bestimmten Zeichenfolge oder einem bestimmten Muster zu suchen, wissen aber nicht, wo Sie mit der Suche beginnen sollen? Dann ist hier der grep-Befehl zur Rettung!

grep ist ein leistungsstarker Dateimustersucher, der in jeder Linux-Distribution enthalten ist. Sollte es aus irgendeinem Grund nicht auf Ihrem System installiert sein, können Sie es wie gezeigt einfach über Ihren Paketmanager installieren.

sudo apt install grep         [On Debian, Ubuntu and Mint]
sudo yum install grep         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
sudo emerge -a sys-apps/grep  [On Gentoo Linux]
sudo apk add grep             [On Alpine Linux]
sudo pacman -S grep           [On Arch Linux]
sudo zypper install grep      [On OpenSUSE]    

Ich habe herausgefunden, dass der einfachste Weg, sich mit dem grep-Befehl vertraut zu machen, darin besteht, einfach einzutauchen und einige Beispiele aus der Praxis zu verwenden.

1. Suchen und Finden von Dateien unter Linux

Nehmen wir an, Sie haben gerade eine neue Kopie des neuen Ubuntu auf Ihrem Computer installiert und möchten Python-Skripting ausprobieren.

Sie haben das Internet nach Tutorials durchsucht, aber Sie sehen, dass zwei verschiedene Versionen von Python verwendet werden, und Sie wissen nicht, welche Version von Python vom Installationsprogramm auf Ubuntu installiert wird, oder ob irgendwelche Module installiert sind.

Führen Sie einfach den folgenden dpkg-Befehl mit grep aus, wie gezeigt:

dpkg -l | grep -i python

Zuerst haben wir dpkg –l ausgeführt, das die auf Ihrem System installierten *.deb-Pakete auflistet. Zweitens haben wir diese Ausgabe an grep -i python weitergeleitet, wo es einfach heißt: „Gehe zu grep und filtere alles heraus, was ‚python‘ enthält, und gib es zurück.“ ”

Die Option -i dient zum Ignorieren der Groß-/Kleinschreibung, da bei grep die Groß-/Kleinschreibung beachtet wird. Die Verwendung der Option -i ist eine gute Angewohnheit, es sei denn, Sie möchten eine spezifischere Suche festlegen.

2. Dateien unter Linux suchen und filtern

Der grep kann auch zum Suchen und Filtern innerhalb einzelner Dateien oder mehrerer Dateien verwendet werden. Nehmen wir dieses Szenario:

Sie haben Probleme mit Ihrem Apache-Webserver und haben eines der vielen tollen Foren im Internet um Hilfe gebeten.

Die freundliche Seele, die Ihnen antwortet, hat Sie gebeten, den Inhalt Ihrer Datei /etc/apache2/apache2.conf zu veröffentlichen. Wäre es für Sie, den Mann, der Ihnen hilft, und alle, die es lesen, nicht einfacher, wenn Sie alle kommentierten Zeilen entfernen könnten? Ja, du kannst! Führen Sie einfach Folgendes aus:

grep -v ^\# /etc/apache2/apache2.conf | grep .

Die Option -v weist grep an, seine Ausgabe umzukehren, was bedeutet, dass statt passender Zeilen das Gegenteil zu tun und alle Zeilen zu drucken, die nicht mit dem Ausdruck übereinstimmen. in diesem Fall die # kommentierten Zeilen.

Beachten Sie, dass wir am Ende auch grep . verwendet haben, um die Ausgabe aller Leerzeilen auszublenden. Auf diese Weise sehen wir nur die Konfigurationseinstellungen in unserem Terminal.

3. Finden Sie alle MP3-Dateien unter Linux

Der grep kann beim Filtern aus stdout sehr nützlich sein. Nehmen wir zum Beispiel an, Sie haben einen ganzen Ordner voller Musikdateien in verschiedenen Formaten.

Sie möchten alle *.mp3-Dateien des Künstlers JayZ finden, möchten aber keinen der remixten Titel. Die Verwendung eines find-Befehls mit ein paar grep-Pipes reicht aus:

find . -name “*.mp3” | grep –i JayZ | grep –vi “remix”

In diesem Beispiel verwenden wir find, um alle Dateien mit der Erweiterung *.mp3 zu drucken, und leiten sie zum Filtern an grep –i weiter alle Dateien mit dem Namen „JayZ“ ausdrucken und ausdrucken und dann eine weitere Pipe zu grep –vi, die herausfiltert und nicht alle Dateinamen mit der Zeichenfolge ausgibt (auf jeden Fall) „Remix“.

4. Zeigen Sie die Anzahl der Zeilen vor oder nach der Suchzeichenfolge an

Weitere Optionen sind die Schalter -A und -B, die die übereinstimmende Zeile und eine Reihe von Zeilen anzeigen, die entweder vor oder nach der Suchzeichenfolge stehen.

Während die Manpage eine detailliertere Erklärung enthält, finde ich es am einfachsten, mir die Optionen als -A=after und -B=< zu merkenvor:

ifconfig | grep -A 4 inet
ifconfig | grep -B 2 UP

5. Druckt die Anzahl der Zeilen um die Übereinstimmung

Die Option -C von grep ist ähnlich, aber anstatt die Zeilen zu drucken, die entweder vor oder nach der Zeichenfolge stehen, werden die Zeilen in beide Richtungen gedruckt:

ifconfig | grep -C 2 lo

 TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 15314  bytes 1593769 (1.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0

6. Zählen Sie die Anzahl der Übereinstimmungen

Ähnlich wie das Weiterleiten einer grep-Zeichenfolge an die Wortanzahl (Befehl wc) kann die integrierte Option von grep dasselbe für Sie tun:

ifconfig | grep -c inet6

7. Suchen Sie unter Linux nach Dateien anhand der angegebenen Zeichenfolge

Die Option –n für grep ist sehr nützlich beim Debuggen von Dateien bei Kompilierungsfehlern. Es zeigt die Zeilennummer in der Datei der angegebenen Suchzeichenfolge an:

grep -n "main" setup.py

8. Durchsuchen Sie rekursiv eine Zeichenfolge in allen Verzeichnissen

Wenn Sie im aktuellen Verzeichnis zusammen mit allen Unterverzeichnissen nach einer Zeichenfolge suchen möchten, können Sie die Option –r für eine rekursive Suche angeben:

grep -r “function” *

9. Suchen Sie nach dem gesamten Muster

Durch Übergeben der Option -w an grep wird nach dem gesamten Muster gesucht, das in der Zeichenfolge enthalten ist. Zum Beispiel mit:

ifconfig | grep -w "RUNNING"

Gibt die Zeile aus, die das Muster in Anführungszeichen enthält. Wenn Sie es andererseits versuchen:

ifconfig | grep -w "RUN"

Es wird nichts zurückgegeben, da wir nicht nach einem Muster suchen, sondern nach einem ganzen Wort.

10. Suchen Sie eine Zeichenfolge in Gzipped Files

Erwähnenswert sind die Derivate von grep. Das erste ist zgrep, das, ähnlich wie zcat, für die Verwendung mit gzip-Dateien vorgesehen ist. Es benötigt dieselben Optionen wie grep und wird auf die gleiche Weise verwendet:

zgrep -i error /var/log/syslog.2.gz

11. Reguläre Ausdrücke in Dateien abgleichen

Der Befehl egrep ist ein weiteres Derivat, das für „Extended Global Regular Expression“ steht. Es erkennt zusätzliche Ausdrucks-Metazeichen wie at + ? | und ().

Der Befehl egrep ist sehr nützlich für die Suche nach Quelldateien und anderen Codeteilen, falls dies erforderlich sein sollte. Es kann aus dem regulären grep aufgerufen werden, indem die Option -E angegeben wird.

grep -E

12. Suchen Sie nach einer festen Musterzeichenfolge

Der Befehl fgrep durchsucht eine Datei oder eine Dateiliste nach einer festen Musterzeichenfolge. Es ist dasselbe wie grep -F. Eine übliche Art, fgrep zu verwenden, besteht darin, ihm eine Datei mit Mustern zu übergeben:

fgrep –f file_full_of_patterns.txt file_to_search.txt

Dies ist nur ein Ausgangspunkt für grep, aber wie Sie wahrscheinlich sehen können, ist es für eine Vielzahl von Zwecken von unschätzbarem Wert. Abgesehen von den einfachen einzeiligen Befehlen, die wir implementiert haben, kann grep zum Schreiben leistungsstarker cron-Jobs und robuster Shell-Skripte verwendet werden Start.

Seien Sie kreativ, experimentieren Sie mit den Optionen auf der Manpage und entwickeln Sie grep-Ausdrücke, die Ihren eigenen Zwecken dienen!