Der Linux-Befehl grep wird als Methode zum Filtern von Eingaben verwendet. GREP steht für Global Regular Expression Printer (Globaler Ausdruck für reguläre Ausdrücke). Um ihn effektiv nutzen zu können, sollten Sie Kenntnisse über reguläre Ausdrücke haben.
In diesem Artikel erfahren Sie einige Beispiele, die Ihnen helfen, den Befehl grep zu verstehen.
01 von 09So suchen Sie mit GREP nach einem String in einer Datei

Stellen Sie sich vor, Sie haben eine Textdatei namens Bücher mit den folgenden Kinderbuch-Titeln:
- Robin Hood
- Rotkäppchen
- Peter Pan
- Goldlöckchen und die drei Bären
- Schneewittchen und die sieben Zwerge
- Pinnochio
- Die Katze im Hut
- Die drei kleinen Schweine
- Der Gruffalo
- Charlie und die Schokoladenfabrik
Um alle Bücher mit dem Wort "The" im Titel zu finden, verwenden Sie die folgende Syntax:
grep Die BücherDie folgenden Ergebnisse werden zurückgegeben:
- Goldlöckchen und die drei Bären
- Schneewittchen und die sieben Zwerge
- Die Katze im Hut
- Die drei kleinen Schweine
- Der Gruffalo
- Charlie und die Schokoladenfabrik
In jedem Fall wird das Wort "The" hervorgehoben.
Bei der Suche wird zwischen Groß- und Kleinschreibung unterschieden. Wenn einer der Titel "the" anstelle von "the" hätte, wäre er nicht zurückgegeben worden.
Um den Fall zu ignorieren, können Sie den folgenden Schalter hinzufügen:
grep die Bücher --ignore-caseSie können den Schalter -i auch wie folgt verwenden:
Lesen Sie weiter unten
02 von 09Suchen Sie nach einer Zeichenfolge in einer Datei mit Platzhaltern
Der Befehl grep ist sehr mächtig. Sie können eine Vielzahl von Pattern-Matching-Techniken verwenden, um die Ergebnisse zu filtern.
In diesem Beispiel zeige ich Ihnen, wie Sie mithilfe von Platzhaltern nach einer Zeichenfolge in einer Datei suchen.
Stellen Sie sich vor, Sie haben eine Datei namens "Orte" mit den folgenden schottischen Ortsnamen:
aberdeenAberystwythAberlourInverurieInvernessNewburghneuer Hirschneues GallowayGlasgowEdinburghWenn Sie alle Orte mit inver im Namen suchen möchten, verwenden Sie die folgende Syntax:
grep inver * StellenDer Stern (*) als Platzhalter steht für 0 oder viele. Wenn Sie also einen Ort namens Inver oder einen Ort namens Inverness haben, werden beide zurückgegeben.
Ein weiterer Platzhalter, den Sie verwenden können, ist der Punkt (.). Sie können dies verwenden, um einen einzelnen Buchstaben zu finden.
grep inver.r orteDer obige Befehl würde Orte finden, die inverurie und inverary genannt werden, aber keine Invereerie, da es nur einen Platzhalter zwischen den beiden rs geben kann, wie durch die einzige Periode angegeben.
Der Punkt als Platzhalter ist nützlich, kann jedoch Probleme verursachen, wenn Sie einen als Teil des gesuchten Textes verwenden.
Schauen Sie sich zum Beispiel diese Liste der Domainnamen an
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- everydaylinuxuser.com
- google.co.uk
- google.au
- direct.gov.uk
Um alle Informationen über .coms zu finden, können Sie die folgende Syntax verwenden:
grep * über * DomainnamenDer obige Befehl würde ausfallen, wenn die Liste den folgenden Namen enthält:
- everydaylinuxuser.com/about.html
Sie können daher die folgende Syntax versuchen:
grep * about.com DomainnamenDies würde funktionieren, es sei denn, es gab eine Domäne mit dem folgenden Namen:
aboutycom.comUm wirklich nach dem Begriff "about.com" zu suchen, müssen Sie den Punkt wie folgt umgehen:
grep * about .com DomainnamenDer letzte Platzhalter für Sie ist das Fragezeichen, das für null oder ein Zeichen steht.
Zum Beispiel:
grep? ber ortsnamenDer obige Befehl würde aberdeen, aberystwyth oder sogar berwick zurückgeben.
Lesen Sie weiter unten
03 von 09Suchen Sie nach Zeichenfolgen am Anfang und am Ende der Zeile. Verwenden Sie grep
Mit dem Karat (^) und dem Dollar ($) - Symbol können Sie am Anfang und am Ende von Zeilen nach Mustern suchen.
Stellen Sie sich vor, Sie haben eine Datei namens Fußball mit den folgenden Teamnamen:
- Blackpool
- Liverpool
- Manchester City
- Leicester City
- Manchester United
- Newcastle United
- FC United von Manchester
Wenn Sie alle mit Manchester beginnenden Teams suchen möchten, verwenden Sie die folgende Syntax:
grep ^ Manchester-TeamsDer obige Befehl würde Manchester City und Manchester United zurückgeben, aber nicht FC United Of Manchester.
Alternativ können Sie alle Teams mit der folgenden Syntax finden:
grep United $ teamsDer obige Befehl würde zu Manchester United und Newcastle United zurückkehren, jedoch nicht zum FC United Of Manchester.
04 von 09Die Anzahl der Übereinstimmungen mit grep zählen
Wenn Sie die eigentlichen Zeilen, die einem Muster entsprechen, nicht mit grep zurückgeben möchten, sondern nur wissen möchten, wie viele Zeilen vorhanden sind, können Sie die folgende Syntax verwenden:
grep -c MustereingabedateiWenn das Muster zweimal übereinstimmt, wird die Zahl 2 zurückgegeben.
Lesen Sie weiter unten
05 von 09Alle Begriffe finden, die nicht mit grep übereinstimmen
Stellen Sie sich vor, Sie haben eine Liste von Ortsnamen mit den folgenden Ländern:
- Aberdeen Schottland
- Glasgow Schottland
- Liverpool England
- Colwyn Bay
- London, England
Sie haben vielleicht bemerkt, dass Colwyn Bay kein Land zugeordnet ist.
Um nach allen Orten mit einem Land zu suchen, können Sie die folgende Syntax verwenden:
Grep Land $ OrteDie Ergebnisse würden sich mit Ausnahme von Colwyn Bay auf alle Orte beziehen.
Dies funktioniert offensichtlich nur für Orte, die in Land enden (kaum wissenschaftlich).
Sie können die Auswahl mit folgender Syntax invertieren:
grep -v land $ orteDies würde alle Orte finden, die nicht mit Land enden.
06 von 09So finden Sie leere Zeilen in Dateien mithilfe von grep
Stellen Sie sich vor, Sie haben eine Eingabedatei, die von einer Drittanbieteranwendung verwendet wird, die das Lesen der Datei stoppt, sobald eine leere Zeile gefunden wird:
- Aberdeen Schottland
- Inverness Schottland
- Liverpool England
- Colwyn Bay Wales
Wenn die Anwendung nach liverpool auf die Zeile kommt, hört das Lesen auf, was bedeutet, dass Colwyn Bay vollständig fehlt.
Sie können mit grep nach leeren Zeilen mit folgender Syntax suchen:
grep ^ $ orteLeider ist dies nicht besonders nützlich, da nur die leeren Zeilen zurückgegeben werden.
Sie können natürlich die Anzahl der leeren Zeilen ermitteln, um zu prüfen, ob die Datei gültig ist, wie folgt:
grep -c ^ $ orteEs ist jedoch sinnvoller, die Zeilennummern zu kennen, die eine leere Zeile haben, damit Sie sie ersetzen können. Sie können das mit dem folgenden Befehl tun:
grep -n ^ $ orteLesen Sie weiter unten
07 von 09So suchen Sie nach Zeichenketten mit Groß- oder Kleinbuchstaben mit grep
Mit grep können Sie feststellen, welche Zeilen in einer Datei Großbuchstaben enthalten. Verwenden Sie dazu die folgende Syntax:
grep 'A-Z' DateinameMit den eckigen Klammern können Sie den Zeichenbereich bestimmen. Im obigen Beispiel stimmt es mit jedem Zeichen überein, das zwischen A und Z liegt.
Um Kleinbuchstaben zu finden, können Sie die folgende Syntax verwenden:
grep 'a-z' DateinameWenn Sie nur Buchstaben und keine Ziffern oder andere Symbole verwenden möchten, können Sie die folgende Syntax verwenden:
grep 'a-zA-Z' DateinameSie können das gleiche mit Zahlen wie folgt machen:
grep '0-9' Dateiname 08 von 09Suchen nach Wiederholungsmustern mit grep
Sie können geschwungene Klammern {} verwenden, um nach einem sich wiederholenden Muster zu suchen.
Stellen Sie sich vor, Sie haben eine Datei mit Telefonnummern wie folgt:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
Sie wissen, dass der erste Teil der Nummer dreistellig sein muss, und Sie möchten die Zeilen finden, die diesem Muster nicht entsprechen.
Aus dem vorherigen Beispiel wissen Sie, dass 0-9 alle Zahlen in einer Datei zurückgibt.
In diesem Fall möchten wir die Zeilen, die mit drei Zahlen beginnen, gefolgt von einem Bindestrich (-). Sie können dies mit der folgenden Syntax tun:
grep "^ 0-9 0-9 0-9 -" ZahlenWie wir aus vorherigen Beispielen wissen, bedeutet carat (^), dass die Linie mit dem folgenden Muster beginnen muss.
Die 0-9 sucht nach einer beliebigen Zahl zwischen 0 und 9. Da diese Zahl dreimal enthalten ist, entspricht sie 3 Zahlen. Schließlich gibt es einen Bindestrich, um anzuzeigen, dass ein Bindestrich auf die drei Zahlen folgen muss.
Mit den geschweiften Klammern können Sie die Suche wie folgt verkleinern:
grep "^ 0-9 {3 } -" ZahlenDer Schrägstrich entgeht der {Klammer, sodass er als Teil des regulären Ausdrucks fungiert. Im Wesentlichen heißt das jedoch 0-9 {3}, was drei Zahlen zwischen 0 und 9 bedeutet.
Die geschweiften Klammern können auch wie folgt verwendet werden:
{5,10}{5,}{5,10} bedeutet, dass das gesuchte Zeichen mindestens fünfmal, jedoch nicht mehr als 10, wiederholt werden muss, während {5} bedeutet, dass das Zeichen mindestens fünfmal wiederholt werden muss, es kann jedoch mehr sein.
Lesen Sie weiter unten
09 von 09Verwenden der Ausgabe anderer Befehle Verwenden von grep
Bisher haben wir uns den Musterabgleich innerhalb einzelner Dateien angesehen, aber grep kann die Ausgabe anderer Befehle als Eingabe für den Musterabgleich verwenden.
Ein gutes Beispiel hierfür ist die Verwendung des Befehls ps, der die aktiven Prozesse auflistet.
Führen Sie beispielsweise den folgenden Befehl aus:
ps -efAlle laufenden Prozesse auf Ihrem System werden angezeigt.
Sie können mit grep wie folgt nach einem bestimmten laufenden Prozess suchen:
ps -ef | Grep FirefoxZusammenfassung
Der Befehl grep ist ein grundlegender Linux-Befehl, und es ist sehr erlernenswert, da er Ihnen bei der Suche nach Dateien und Prozessen bei der Verwendung des Terminals das Leben erheblich erleichtert.




