In diesem Tutorial lernen wir etwas über "grep" Befehl. Grep steht für G lobales r zB e Ausdruck p druck. Wie der Name schon sagt, wird Grep verwendet, um Textdateien mit regulären Ausdrücken zu durchsuchen (kurz regex ). Es druckt die Zeilen, die dem angegebenen Muster entsprechen, in einer Textdatei. Wenn keine Datei angegeben ist, sucht grep rekursiv nach dem angegebenen Muster in den Dateien im aktuellen Verzeichnis. Grep hat zwei Varianten, nämlich egrep und fgrep . Diese Varianten sind veraltet, werden aber aus Gründen der Abwärtskompatibilität bereitgestellt. Anstatt "grep -E" und "grep -F" zu verwenden, können Sie "egrp" bzw. "fgrep" verwenden. Lassen Sie uns ohne weiteres anfangen.
Grep-Befehlsbeispiele
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 world
Um die Suche zu starten, geben Sie einfach grep ein, gefolgt von dem, wonach Sie suchen, und von wo aus Sie suchen. Zum Beispiel werde ich nach der Zeichenfolge "nix" suchen in file.txt. Dazu führe ich Folgendes aus:
$ grep nix file.txt
Beispielausgabe:
ostechnix Ostechnix o$technix unix
Wie Sie in der obigen Ausgabe sehen, haben wir zwei Wörter, die das übereinstimmende Muster „nix“ enthalten. Wenn die Suchzeichenfolge aus zwei Wörtern besteht, erwähnen Sie sie wie unten in einfachen Anführungszeichen.
$ grep 'hello world' file.txt hello world
Sie können auch -n verwenden Flag, um die Zeilennummern in der Ausgabe anzuzeigen:
$ grep -n nix file.txt
Beispielausgabe:
1:ostechnix 2:Ostechnix 3:o$technix 6:unix
Dies kann nützlich sein, wenn Sie mit einem sehr langen Code arbeiten.
Bitte beachten Sie, dass bei grep zwischen Groß- und Kleinschreibung unterschieden wird . Zum Beispiel, wenn Sie nach "os" suchen , es werden keine Zeilen angezeigt, die Großbuchstaben enthalten, z. B. Os.
Überprüfen Sie das folgende Beispiel.
$ grep os file.txt ostechnix
Aber ich habe ein anderes Wort namens "Ostechnix" in file.txt, aber grep hat es nicht aufgelistet.
Wenn Sie jedoch Groß- und Kleinschreibung ignorieren möchten, können Sie "-i" verwenden kennzeichnen wie unten.
$ grep -i os file.txt ostechnix Ostechn1x
$ grep -i 'hello world' file.txt hello world HELLO world
Jetzt kümmerte sich grep nicht um die Groß-/Kleinschreibung und wir bekamen die Wörter, die sowohl Groß- als auch Kleinbuchstaben im Ergebnis enthalten.
Wir können auch eine Ausgabe eines Befehls in grep leiten. Sehen Sie sich das folgende Beispiel an.
$ cat file.txt | grep os ostechnix
Jetzt sehen, was wir haben. Die Ausgabe der file.txt wird an grep geleitet und die Wörter, die die Buchstaben „os“ in file.txt enthalten, wurden angezeigt.
Wir können auch einige Sonderzeichen oder reguläre Ausdrücke in grep verwenden.
- ^ - Am Anfang der Zeile suchen.
- $ - am Ende der Zeile suchen.
- . - Suchen Sie nach einem beliebigen Zeichen.
Lassen Sie mich Ihnen ein Beispiel zeigen, damit Sie verstehen, wo und wie Sie diese Sonderzeichen verwenden.
Wie Sie bereits wissen, können wir nach Wörtern suchen, die die Zeichenfolge "tech" enthalten wie unten.
$ grep tech file.txt ostechnix Ostechnix o$technix technology
Aber was wäre, wenn Sie nur nach den Zeilen suchen wollten, die nur mit dem Wort „tech“ beginnen? Sie möchten nicht alle Wörter anzeigen, die die Zeichenfolge enthalten, sondern nur die Wörter, die die Zeichenfolge „tech“ am Anfang haben. Es ist auch möglich. Hier kommen Sonderzeichen ins Spiel.
Um nach den Wörtern zu suchen, die dem Muster „tech“ am Anfang der Zeile in einer Datei entsprechen, führen Sie Folgendes aus:
$ grep ^tech file.txt technology
Ebenso können wir nach Wörtern suchen, die mit bestimmten Buchstaben enden, zum Beispiel "x" , wie unten.
$ grep x$ file.txt ostechnix Ostechnix o$technix linux unix
Außerdem können Sie mit . nach Wörtern suchen, die beliebige Zeichen enthalten (Punkt).
Lassen Sie uns zum Beispiel nach jedem Wort suchen, das "n" enthält in der Datei.
$ grep .n file.txt ostechnix Ostechnix o$technix linux linus unix technology
Sie sollten jetzt ein grundlegendes Verständnis für die Verwendung von grep haben. Lassen Sie uns fortfahren und die beiden anderen Varianten lernen, nämlich egrep und fgrep .
Beispiele für Egrep-Befehle
egrep steht für e xtended grep . Es ähnelt "grep -E" Befehl. Es wird alles tun, was grep tun wird. Es bietet jedoch einige zusätzliche Funktionalitäten, wie z. B. die Verwendung komplizierter regulärer Ausdrücke, als der normale grep-Befehl standardmäßig bietet.
Beispielsweise können wir nach beliebigen Wörtern suchen, die entweder mit "l" beginnen oder "o" .
Denken Sie daran, dass wir das Caret-Symbol (^) verwenden, um Wörter am Zeilenanfang zu suchen. Daher lautet unser Befehl für die obige Abfrage:
$ egrep '^(l|o)' file.txt ostechnix o$technix linux linus
Sehen? Wir haben alle Wörter, die entweder mit „l“ oder „o“ beginnen. Bitte beachten Sie, dass der normale grep-Befehl dies nicht kann.
Ebenso können wir nach Zeilen suchen, die mit einem beliebigen Zeichenbereich zwischen "l" und "u" beginnen. Das heißt, wir erhalten die Zeilen, die mit l, m, n, o, p, q, r, s, t und u beginnen. Alles andere wird aus dem Ergebnis weggelassen.
$ egrep '^[l-u]' file.txt ostechnix o$technix linux linus unix technology
Bitte beachten Sie, dass ich eckige Klammern verwendet habe ([), um nach dem Wortbereich zu suchen. Da grep zwischen Groß- und Kleinschreibung unterscheidet, findet es im angegebenen Bereich keine Zeilen, die 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.txt
Oder,
$ egrep '^([l-u]|[L-U])' file.txt
Beispielausgabe:
ostechnix Ostechnix o$technix linux linus unix technology HELLO world
Sehen? Jetzt haben wir die Wörter, die mit dem Zeichenbereich "l" bis "u" (entweder Groß- oder Kleinschreibung) beginnen.
Fgrep-Befehlsbeispiele
fgrep steht für f ast grep . Es ähnelt "grep -F" . fgrep kann keine regulären Ausdrücke oder Sonderzeichen erkennen. fgrep kann verwendet werden, wenn reguläre Ausdrücke ausgewertet werden sollen.
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 unix
Führen Sie nun denselben Befehl mit fgrep.
aus$ fgrep x$ file.txt
Es wird nichts angezeigt, da es die Sonderzeichen nicht auswerten konnte.
Sehen wir uns nun ein weiteres Beispiel an. Um nach den Wörtern zu suchen, die mit der Zeichenfolge "o$" übereinstimmen Mit dem Befehl grep machen wir:
$ grep o$ file.txt
Aber 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 mit "o" enden, erhalten wir nichts.
Führen Sie nun denselben Befehl mit fgrep.
aus$ fgrep o$ file.txt o$technix
Sehen? Hier verwenden wir den Befehl fgrep. Es ignoriert einfach das Dollarzeichen (natürlich das Sonderzeichen) und zeigt das Wort an, das die Zeichenkette "o$" enthält.
Geben Sie für weitere Details zu grep Folgendes ein:
$ grep --help
Es wird alle möglichen Optionen geben. Oder lesen Sie die Manpages.
$ man grep
Empfohlene Lektüre:
- Lernen Sie, Manpages effizient zu verwenden
Etymologie von grep
Grep wurde über Nacht von Ken Thompson geschrieben , derselbe Typ, der Unix geschrieben hat. Aber warum und wie kam es zu seinem Namen? Professor Brian Kernighan erklärt die Etymologie von grep in diesem Video.
Und das ist alles. Grep ist einer der wichtigsten Befehle, die Sie gründlich lernen sollten.
Sie wissen jetzt, was grep ist und wie man es verwendet, um Textdateien mit übereinstimmenden Mustern in GNU/Linux zu durchsuchen. Außerdem haben Sie erfahren, wie Grep zu seinem Namen kam. Ich hoffe, das war hilfreich.