Skip to main content

Beispielverwendungen des Linux-Befehls grep

Anonim

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 09

So 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ücher

Die 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-case

Sie können den Schalter -i auch wie folgt verwenden:

grep -i die Bücher

Lesen Sie weiter unten

02 von 09

Suchen 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 GallowayGlasgowEdinburgh

Wenn Sie alle Orte mit inver im Namen suchen möchten, verwenden Sie die folgende Syntax:

grep inver * Stellen

Der 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 orte

Der 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 * Domainnamen

Der 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 Domainnamen

Dies würde funktionieren, es sei denn, es gab eine Domäne mit dem folgenden Namen:

aboutycom.com

Um wirklich nach dem Begriff "about.com" zu suchen, müssen Sie den Punkt wie folgt umgehen:

grep * about .com Domainnamen

Der letzte Platzhalter für Sie ist das Fragezeichen, das für null oder ein Zeichen steht.

Zum Beispiel:

grep? ber ortsnamen

Der obige Befehl würde aberdeen, aberystwyth oder sogar berwick zurückgeben.

Lesen Sie weiter unten

03 von 09

Suchen 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-Teams

Der 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 $ teams

Der obige Befehl würde zu Manchester United und Newcastle United zurückkehren, jedoch nicht zum FC United Of Manchester.

04 von 09

Die 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 Mustereingabedatei

Wenn das Muster zweimal übereinstimmt, wird die Zahl 2 zurückgegeben.

Lesen Sie weiter unten

05 von 09

Alle 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 $ Orte

Die 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 $ orte

Dies würde alle Orte finden, die nicht mit Land enden.

06 von 09

So 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 ^ $ orte

Leider 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 ^ $ orte

Es 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 ^ $ orte

Lesen Sie weiter unten

07 von 09

So 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' Dateiname

Mit 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' Dateiname

Wenn Sie nur Buchstaben und keine Ziffern oder andere Symbole verwenden möchten, können Sie die folgende Syntax verwenden:

grep 'a-zA-Z' Dateiname

Sie können das gleiche mit Zahlen wie folgt machen:

grep '0-9' Dateiname 08 von 09

Suchen 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 -" Zahlen

Wie 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 } -" Zahlen

Der 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 09

Verwenden 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 -ef

Alle laufenden Prozesse auf Ihrem System werden angezeigt.

Sie können mit grep wie folgt nach einem bestimmten laufenden Prozess suchen:

ps -ef | Grep Firefox

Zusammenfassung

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.