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 Saite oder einem bestimmten Muster zu suchen, und wussten nicht, wo Sie anfangen sollen zu suchen? Na dann, hier ist der grep-Befehl zur Rettung!

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

$ 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 festgestellt, dass der einfachste Weg, sich mit dem grep-Befehl vertraut zu machen, darin besteht, direkt einzutauchen und einige Beispiele aus der Praxis zu verwenden.

1. Suchen und finden Sie Dateien unter Linux

Nehmen wir an, Sie haben gerade eine neue Kopie des neuen Ubuntu auf Ihrem Computer installiert und werden Python-Skripte 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 Module installiert wurden.

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

dpkg -l | grep -i python

Zuerst haben wir dpkg –l ausgeführt, das die installierten *.deb Pakete auf Ihrem System auflistet. Zweitens haben wir diese Ausgabe an grep -i python weitergeleitet, das einfach besagt: "Gehen Sie zu grep und filtern Sie alles heraus und geben Sie alles zurück, was 'python' enthält. ”

Die Option -i ist dazu da, Groß- und Kleinschreibung zu ignorieren, da grep zwischen Groß- und Kleinschreibung unterscheidet. Die Verwendung der Option -i ist eine gute Angewohnheit, in die Sie einsteigen sollten, es sei denn, Sie versuchen natürlich, eine spezifischere Suche zu treffen.

2. Suchen und Filtern von Dateien unter Linux

Das grep kann auch verwendet werden, um innerhalb einzelner Dateien oder mehrerer Dateien zu suchen und zu filtern. Nehmen wir dieses Szenario:

Sie haben Probleme mit Ihrem Apache-Webserver und haben sich an eines der vielen großartigen Foren im Netz gewandt und 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 nicht einfacher für dich, den Mann, der dir hilft, und alle, die es lesen, wenn du alle kommentierten Zeilen entfernen könntest? Nun, das können Sie! Führen Sie einfach Folgendes aus:

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

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

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

3. Finden Sie alle .mp3 Dateien unter Linux

Das grep kann sehr nützlich sein, um von stdout zu filtern. Nehmen wir zum Beispiel an, Sie haben einen ganzen Ordner voller Musikdateien in einer Reihe verschiedener Formate.

Du möchtest alle *.mp3-Dateien des Künstlers JayZ finden, aber keine der remixten Tracks. 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, leiten sie an grep –i weiter, um alle Dateien mit dem Namen "JayZ" herauszufiltern und zu drucken, und dann eine weitere Pipe an grep –vi, die herausfiltert und nicht alle Dateinamen mit der Zeichenkette (auf jeden Fall) "remix" ausgibt.

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

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

Während die Manpage eine detailliertere Erklärung gibt, finde ich es am einfachsten, sich die Optionen als -A=after und -B=before zu merken:

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 Zeichenkette 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 beim Weiterleiten einer grep-Zeichenkette an die Wortzahl (wc-Befehl) kann die integrierte Option von grep dasselbe für Sie tun:

# ifconfig | grep -c inet6

7. Suchen Sie Dateien nach einer bestimmten Zeichenfolge unter Linux

Die Option –n für grep ist sehr nützlich beim Debuggen von Dateien während Kompilierungsfehlern. Es zeigt die Zeilennummer in der Datei des angegebenen Suchbegriffs an:

# grep -n "main" setup.py

8. Suchen Sie einen String rekursiv in allen Verzeichnissen

Wenn Sie im aktuellen Verzeichnis zusammen mit allen Unterverzeichnissen nach einer Zeichenfolge suchen möchten, können Sie die Option –r angeben, um rekursiv zu suchen:

# grep -r “function” *

9. Suchen Sie nach dem gesamten Muster

Wenn Sie die Option -w an grep übergeben, wird nach dem gesamten Muster gesucht, das sich in der Zeichenfolge befindet. Zum Beispiel mit:

# ifconfig | grep -w "RUNNING"

Druckt die Zeile mit dem Muster in Anführungszeichen aus. Auf der anderen Seite, wenn Sie versuchen:

# ifconfig | grep -w "RUN"

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

10. Suchen Sie nach einer Zeichenfolge in gezippten Dateien

Erwähnenswert sind die Derivate von grep. Die erste ist zgrep, die, ähnlich wie zcat, für gezippte Dateien gedacht ist. Es nimmt die gleichen 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 eine weitere Ableitung, die für "Extended Global Regular Expression" steht. Es erkennt zusätzliche Ausdrucksmetazeichen wie bei +, ? | und ().

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 Liste von Dateien nach einer festen Musterzeichenfolge. Es ist das gleiche wie grep -F. Eine gängige Methode zur Verwendung von fgrep besteht darin, eine Datei mit Mustern an fgrep zu übergeben:

fgrep –f file_full_of_patterns.txt file_to_search.txt

Dies ist nur ein Ausgangspunkt mit 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 verwendet werden, um leistungsstarke Cronjobs und robuste Shell-Skripte zu schreiben.

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

Verwandte Artikel: