Hast du jemals mit der Aufgabe konfrontiert gewesen, nach einem bestimmten String oder Muster in einer Datei zu suchen, ohne zu wissen, wo du anfangen sollst? Nun, hier kommt der grep-Befehl zur Rettung!
grep ist ein leistungsstarkes Datei-Mustersuchwerkzeug, das auf jedem Linux-Betriebssystem vorinstalliert ist. Falls es aus irgendeinem Grund nicht auf deinem System installiert ist, kannst du es einfach über deinen 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]
I have found that the easiest way to get your feet wet with the grep command is to just dive right in and use some real-world examples.
1. Suchen und Finden von Dateien in Linux
Angenommen, du hast gerade eine frische Kopie von Ubuntu auf deinem Computer installiert und möchtest Python-Skripting ausprobieren.
Du hast das Internet nach Tutorials durchsucht, aber du stellst fest, dass zwei verschiedene Versionen von Python verwendet werden, und du weißt nicht, welche Version von Python auf Ubuntu vom Installer installiert wurde oder ob irgendwelche Module installiert wurden.
Führe 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, was einfach besagt „gehe zu grep und filtere alles mit ‚python‘ heraus und gib es zurück.“
Die Option -i
dient dazu, die Groß- und Kleinschreibung zu ignorieren, da grep auf Groß- und Kleinschreibung achtet. Die Verwendung der Option -i
ist eine gute Gewohnheit, es sei denn, Sie versuchen natürlich, eine spezifischere Suche durchzuführen.
2. Dateien in Linux suchen und filtern
Das grep kann auch verwendet werden, um in einzelnen Dateien oder mehreren Dateien zu suchen und zu filtern. Betrachten wir dieses Szenario:
Sie haben Probleme mit Ihrem Apache Web Server und haben sich an eines der vielen großartigen Foren im Netz gewandt, um um Hilfe zu bitten.
Die freundliche Person, die Ihnen antwortet, hat Sie gebeten, den Inhalt Ihrer /etc/apache2/apache2.conf Datei zu posten. Wäre es nicht einfacher für Sie, den Helfer und alle, die es lesen, wenn Sie alle kommentierten Zeilen entfernen könnten? Das können Sie! Führen Sie einfach Folgendes aus:
grep -v ^\# /etc/apache2/apache2.conf | grep .
Die Option -v
sagt grep, dass es seine Ausgabe umkehren soll, was bedeutet, dass anstelle von übereinstimmenden Zeilen alle Zeilen gedruckt werden, die nicht mit dem Ausdruck übereinstimmen, in diesem Fall den #
kommentierten Zeilen.
Beachten Sie, dass wir am Ende auch grep .
verwendet haben, um die Ausgabe aller leeren Zeilen zu verbergen. Auf diese Weise sehen wir nur die Konfigurationseinstellungen in unserem Terminal.

3. Alle .mp3 Dateien in Linux finden
Der grep kann sehr nützlich sein, um aus stdout zu filtern. Nehmen wir zum Beispiel an, dass Sie einen gesamten Ordner voller Musikdateien in verschiedenen Formaten haben.
Sie möchten alle *.mp3
-Dateien des Künstlers JayZ finden, aber Sie möchten keine der remixten Tracks. Mit einem find-Befehl und ein paar grep-Pipes funktioniert das:
# find . -name “*.mp3” | grep –i JayZ | grep –vi “remix”
In diesem Beispiel verwenden wir find, um alle Dateien mit der *.mp3
-Erweiterung auszugeben, leiten es dann zu grep -i
weiter, um alle Dateien mit dem Namen „JayZ“ zu filtern und auszugeben, und dann eine weitere Pipe zu grep -vi
, um alle Dateinamen mit der Zeichenfolge (in beliebiger Groß- und Kleinschreibung) „remix“ zu filtern und nicht auszugeben.
[ Sie könnten auch mögen: 35 praktische Beispiele für den Linux Find-Befehl ]
4. Anzeigen der Anzahl von Zeilen vor oder nach der Suchzeichenfolge
Weitere Optionen sind die Schalter -A
und -B
, die die übereinstimmende Zeile und eine Anzahl von Zeilen anzeigen, die entweder vor oder nach der Suchzeichenfolge kommen.
Während die Manpage eine ausführlichere Erklärung liefert, finde ich es am einfachsten, die Optionen als -A
= nach und -B
= vor zu merken:
ifconfig | grep -A 4 inet ifconfig | grep -B 2 UP

5. Druckt Anzahl der Zeilen um das Übereinstimmung
Die Option -C
von grep ist ähnlich, aber anstatt die Zeilen zu drucken, die entweder vor oder nach dem String kommen, druckt sie die Zeilen in beide Richtungen:
# 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ähle die Anzahl der Übereinstimmungen
Ähnlich wie das Piping eines grep Strings zur Wortanzahl (wc-Befehl) kann die integrierte Option von grep dasselbe für Sie durchführen:
# ifconfig | grep -c inet6
7. Dateien nach einem angegebenen String in Linux durchsuchen
Die -n
Option für grep ist sehr nützlich beim Debuggen von Dateien während des Kompilierungsfehlers. Sie zeigt die Zeilennummer in der Datei des angegebenen Suchstrings an:
# grep -n "main" setup.py
8. String rekursiv in allen Verzeichnissen suchen
Wenn Sie einen String im aktuellen Verzeichnis sowie in allen Unterverzeichnissen suchen möchten, können Sie die Option -r
angeben, um rekursiv zu suchen:
# grep -r “function” *
9. Nach dem gesamten Muster suchen
Die Option -w
an grep übergeben sucht nach dem gesamten Muster, das im String enthalten ist. Zum Beispiel, mit:
# ifconfig | grep -w "RUNNING"
Wird die Zeile mit dem Muster in Anführungszeichen ausgegeben. Andererseits, wenn Sie versuchen:
# ifconfig | grep -w "RUN"

Wird nichts zurückgegeben, da wir nicht nach einem Muster suchen, sondern nach einem ganzen Wort.
10. Suche einen String in Gzipped-Dateien
Erwähnenswert sind einige Derivate von grep. Das erste ist zgrep, das, ähnlich wie zcat, für die Verwendung mit gzipped-Dateien gedacht ist. Es verwendet dieselben Optionen wie grep und wird auf die gleiche Weise verwendet:
# zgrep -i error /var/log/syslog.2.gz

11. Übereinstimmende reguläre Ausdrücke in Dateien finden
Der egrep-Befehl ist ein weiteres Derivat, das für „Erweiterten Globalen Regulären Ausdruck“ steht. Er erkennt zusätzliche Ausdrucks-Metazeichen wie at + ? |
und ()
.
egrep-Befehl ist sehr nützlich zum Suchen von Quelldateien und anderen Code-Stücken, wenn Bedarf besteht. Er kann aus dem regulären grep durch Angabe der Option -E
aufgerufen werden.
grep -E
12. Suche eine feste Musterzeichenfolge
Der fgrep-Befehl durchsucht eine Datei oder eine Liste von Dateien nach einer festen Musterzeichenfolge. Er ist dasselbe wie grep -F
. Eine häufige Verwendung von fgrep 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 mit grep, aber wie Sie wahrscheinlich sehen können, ist es für eine Vielzahl von Zwecken unverzichtbar. Abgesehen von den einfachen einzeiligen Befehlen, die wir implementiert haben, kann grep verwendet werden, um leistungsstarke cron-Jobs und robuste Shell-Skripte zu schreiben, um nur anzufangen.
Seien Sie kreativ, experimentieren Sie mit den Optionen auf der Manpage und entwickeln Sie grep-Ausdrücke, die Ihren eigenen Zwecken dienen!
Source:
https://www.tecmint.com/12-practical-examples-of-linux-grep-command/