Das Linux-Grep-Befehls-Tutorial mit Beispielen für Anfänger
In diesem Tutorial werden wir die Verwendung des grep-Befehls mit Beispielen unter Linux erlernen. Grep steht für Global regular expression print. Wie der Name schon sagt, wird Grep verwendet, um Textdateien mit regulären Ausdrücken (kurz regex) zu durchsuchen. Es gibt die Zeilen aus, die dem angegebenen Muster in einer Textdatei entsprechen. Wenn keine Datei angegeben wird, durchsucht grep das angegebene Muster rekursiv in den Dateien des aktuellen Verzeichnisses. Grep hat zwei Varianten, nämlich egrep und fgrep. Diese Varianten sind veraltet, werden jedoch aus Gründen der Abwärtskompatibilität bereitgestellt. Anstatt "grep -E" und "grep -F" zu verwenden, können Sie stattdessen "egrep" bzw. "fgrep" verwenden. Ohne weitere Verzögerung, lassen Sie uns beginnen.
Beispiele für den Grep-Befehl
Ich habe eine Datei namens file.txt mit einigen zufälligen Wörtern. Schauen wir uns file.txt an:
$ cat file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
hello world
HELLO worldUm die Suche zu beginnen, geben Sie einfach grep gefolgt von dem ein, wonach Sie suchen, und von wo aus Sie suchen, ein. Zum Beispiel werde ich die Zeichenkette „nix“ in file.txt suchen. Dazu führe ich aus:
$ grep nix file.txtBeispielfausgabe:
ostechnix
Ostechnix
o$technix
unixWie Sie im obigen Output sehen, haben wir zwei Wörter, die das passende Muster "nix" enthalten. Wenn der Suchstring zwei Wörter enthält, nennen Sie sie in einfachen Anführungszeichen wie unten.
$ grep 'hello world' file.txt
hello world
Sie können auch das -n Flag verwenden, um die Zeilennummern in der Ausgabe anzuzeigen:
$ grep -n nix file.txtBeispielfausgabe:
1:ostechnix
2:Ostechnix
3:o$technix
6:unixDas kann nützlich sein, wenn man mit einem wirklich langen Code arbeitet.
Bitte beachten Sie, dass grep groß- und kleinschreibungsempfindlich ist. Zum Beispiel, wenn Sie nach "os" suchen, werden keine Zeilen angezeigt, die Großbuchstaben enthalten, z. B. Os.
Überprüfen Sie das folgende Beispiel.
$ grep os file.txt
ostechnixAber ich habe ein weiteres Wort namens "Ostechnix" in file.txt, aber grep hat es nicht aufgelistet.
Wenn Sie jedoch die Groß-/Kleinschreibung ignorieren möchten, können Sie das "-i"-Flag wie unten verwenden.
$ grep -i os file.txt
ostechnix
Ostechnix$ grep -i 'hello world' file.txt
hello world
HELLO worldJetzt kümmerte sich grep nicht um die Groß- und Kleinschreibung und wir erhielten die Wörter, die sowohl Groß- als auch Kleinbuchstaben enthalten, im Ergebnis.
Wir können auch die Ausgabe eines Befehls in grep weiterleiten. Schauen Sie sich das folgende Beispiel an.
$ cat file.txt | grep os
ostechnixSieh dir jetzt an, was wir haben. Die Ausgabe der Datei file.txt wird in grep geleitet und die Wörter, die die Buchstaben „os“ in file.txt enthalten, werden angezeigt.
Wir können in grep auch einige Sonderzeichen oder reguläre Ausdrücke verwenden.
- ^ - Suche am Anfang der Zeile.
- $ - Suche am Ende der Zeile.
- . - Suche nach einem beliebigen Zeichen.
Lassen Sie mich Ihnen ein Beispiel zeigen, damit Sie verstehen, wo und wie diese Sonderzeichen verwendet werden.
Du weißt bereits, wir können nach den Wörtern suchen, die den String "tech" enthalten, wie unten.
$ grep tech file.txt
ostechnix
Ostechnix
o$technix
technologyAber was, wenn Sie nur nach den Zeilen suchen möchten, die nur mit dem Wort "tech" beginnen. Sie möchten nicht alle Wörter anzeigen, die die Zeichenkette enthalten, sondern nur die Wörter, die die Zeichenkette "tech" am Anfang haben. Das ist auch möglich. Hier kommen Spezialzeichen ins Spiel.
Um nach Wörtern zu suchen, die dem Muster "tech" am Anfang der Zeile in einer Datei entsprechen, führen Sie aus:
$ grep ^tech file.txt
technologyÄhnlich können wir nach Wörtern suchen, die mit einem bestimmten Buchstaben bzw. Buchstaben enden, zum Beispiel "x", wie unten.
$ grep x$ file.txt
ostechnix
Ostechnix
o$technix
linux
unixAußerdem können Sie die Wörter finden, die ein beliebiges Zeichen mit . (Punkt) enthalten.
Zum Beispiel lassen Sie uns nach einem Wort suchen, das "n" in der Datei hat.
$ grep .n file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technologyVerstehen der Grep-Kontextoptionen
Manchmal möchten Sie nicht nur die übereinstimmende Zeile sehen, sondern auch die Zeilen darum herum. Hier kommen die Kontext-Flags ins Spiel: --context, -A, -B und -C. Mit den grep-Kontext-Flags können Sie wichtige umgebende Informationen leicht sehen. Für weitere Details verweisen Sie auf den folgenden Leitfaden:
- So verwenden Sie den Linux-Grep-Befehl mit Kontext-Flags
Sie sollten nun ein grundlegendes Verständnis der grep-Nutzung haben. Lassen Sie uns nun die beiden anderen Varianten kennenlernen, nämlich egrep und fgrep.
Egrep-Befehlsbeispiele
egrep steht für ergänztes grep. Es ist ähnlich wie der Befehl "grep -E". Es wird alles tun, was grep tun würde. Allerdings bietet es einige zusätzliche Funktionen, wie die Verwendung komplizierter regulärer Ausdrücke, die der normale grep-Befehl standardmäßig nicht bietet.
Zum Beispiel können wir nach Wörtern suchen, die entweder mit „l“ oder „o“ beginnen.
Denken Sie daran, dass wir das Dachsymbol (^) verwenden, um nach Wörtern am Beginn einer Zeile zu suchen. Daher lautet unser Befehl für die obige Abfrage:
$ egrep '^(l|o)' file.txt
ostechnix
o$technix
linux
linusSiehst du? Wir haben alle Wörter, die entweder mit „l“ oder „o“ beginnen. Bitte beachten Sie, dass der normale grep-Befehl dies nicht kann.
Ähnlich können wir nach den Zeilen suchen, die mit einem beliebigen Zeichenbereich zwischen "l" und "u" beginnen. Das bedeutet, dass wir die Zeilen erhalten, die mit l, m, n, o, p, q, r, s, t und u beginnen. Alles andere wird aus dem Ergebnis ausgeschlossen.
$ egrep '^[l-u]' file.txt
ostechnix
o$technix
linux
linus
unix
technologyBitte beachten Sie, dass ich eckige Klammer ([) verwendet habe, um nach dem Wortbereich zu suchen. Da grep zwischen Groß- und Kleinschreibung unterscheidet, wird es keine Zeilen finden, die im angegebenen Bereich mit Großbuchstaben beginnen.
Um alle Zeilen anzuzeigen, die sowohl mit Groß- als auch mit Kleinbuchstaben beginnen, verwenden wir:
$ egrep '^[l-u]|[L-U]' file.txtOder,
$ egrep '^([l-u]|[L-U])' file.txtBeispielfausgabe:
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
Siehst du? Jetzt haben wir die Wörter, die mit dem Zeichenbereich "l" bis "u" beginnen (egal ob Groß- oder Kleinbuchstaben).
Beispiele für den Befehl fgrep
fgrep steht für fast grep. Es ist ähnlich wie "grep -F". fgrep kann keine regulären Ausdrücke oder Sonderzeichen erkennen. fgrep kann dort verwendet werden, wo Sie möchten, dass reguläre Ausdrücke ausgewertet werden.
Zum Beispiel verwenden wir den folgenden Befehl, um die Wörter zu finden, die auf "x" enden.
$ grep x$ file.txt
ostechnix
Ostechnix
o$technix
linux
unixFühren Sie nun denselben Befehl mit fgrep aus.
$ fgrep x$ file.txtEs wird nichts anzeigen, weil es die Sonderzeichen nicht auswerten konnte.
Sehen wir uns nun ein weiteres Beispiel an. Um nach den Wörtern zu suchen, die mit dem String "o$" mit dem grep-Befehl übereinstimmen, machen wir Folgendes:
$ grep o$ file.txtAber wir bekommen nichts, warum? Weil wir gemäß dem obigen Befehl das Dollarzeichen ($) verwenden, um die Wörter zu finden, die auf "o" enden. Da in file.txt keine Zeichen auf "o" enden, bekommen wir nichts.
Führen Sie nun denselben Befehl mit fgrep aus.
$ fgrep o$ file.txt
o$technixSiehst du? Hier verwenden wir den Befehl fgrep. Er ignoriert einfach das Dollarzeichen (das Sonderzeichen, natürlich) und zeigt das Wort an, das die Zeichenfolge "o$" enthält.
Für weitere Details über grep, tippen Sie:
$ grep --helpEs wird alle möglichen Optionen anzeigen. Oder sehen Sie in den Handbuchseiten nach.
$ man grepVorgeschlagene Lektüre:
- Lerne, Handbuchseiten effizient zu nutzen
Etymologie von grep
Grep wurde über Nacht von Ken Thompson geschrieben, dem gleichen Typ, der Unix geschrieben hat. Aber warum und wie bekam es seinen Namen? Professor Brian Kernighan erklärt in diesem Video die Etymologie von grep.
Und das ist alles. Grep ist einer der wichtigen Befehle, den man gründlich lernen sollte.
Du weißt jetzt, was grep ist und wie man es verwendet, um Textdateien nach passenden Mustern in GNU/Linux zu durchsuchen. Außerdem hast du gelernt, wie grep zu seinem Namen kam. Hoffentlich war das nützlich.
Verwandte Lektüre:
- Finden Sie Dateien, die bestimmten Text mithilfe von Grep und Ripgrep in Linux enthalten
- Wie man in Linux mithilfe von Grep, Find und Ripgrep in Dateien sucht