1440 x 1652  

grep

  • Dateinamen-Expansion * ? [ ! \

  • Regular Expression * . [ ^ | \

  • Extended Regular Expression

grep Suche mit Metazeichen ^ . * [ | \ $

grep durchsucht alle Zeilen einer Datei nach dem angegebenen Suchmuster und zeigt alle dem Muster entsprechenden Zeilen auf stdout an (Filter). erlaubt Metazeichen (wie ed). Damit die Metazeichen nicht von der Shell interpretiert werden, wird der Expression in Apostrophs eingeschlossen.

^ der Suchstring beginnt am Anfang der Zeile

. ein beliebiges Zeichen

* eine beliebige Anzahl des unmittelbar davor stehenden Zeichens

[ ] Zeichenklasse (Aufzählung) } ist nur in Verbindung mit [ ein Metazeichen [1357] [a-zA-Z] Alle Buchstaben (keine Umlaute enthalten) [a-zA-Z0-9-] Buchstaben, Ziffern und Bindestrich (muß am Ende stehen)

[^ ] Negation der Klasse, jedes Zeichen aus den in der Klasse angegebenen Zeichen


Optionen: -bcilnsv

-b mit Blocknummer ausgeben

-c nur übereinstimmende Zeilen zählen (count)

-i Groß- und Kleinschreibung ignorieren grep -ic '[Gg]raf' maerchen

-l gibt den Dateinamen in dem ein Suchmuster gefunden wurde nur einmal (als separate Zeile) aus

-n Jede Ausgabezeile mit der Zeilennummer ausgeben, in der das Suchmuster in der Datei gefunden wurde.

-s Fehlermeldung unterdrücken, wenn Dateien nicht lesbar sind (Zeilen werden durch BUFSIZE in der Grösse begrenzt)

-v alle Zeilen ohne übereinstimmung (verbose)


Achtung: Da die Zeichen $ * [ ^ | . ( ) \ von der Shell interpretiert werden, wenn sie in einer Kommandozeile stehen, müssen sie durch \ maskiert oder in 'Single Quote' eingeschlossen werden. Zeichenklassen [ ] sind zulässig.

Beispiele : 
  ls -l | grep '^d'
               	|__Es werden von grep nur die Zeilen  selektiert, die d als
		   ersten Buchstaben am Zeilenanfang haben. D.h es werden nur die Directorynamen angezeigt.

  ls -l | grep '^d' | wc -l
                    Es wird die Anzahl der Directories  ermittelt.

  ls -l | grep '^...x'
		   Es werden nur Dateien angezeigt, für die beim Owner execute-Permission gegeben ist.

  grep  '^[^:]*:[^:]*:0*[12][0-9][0-9]:'  /etc/passwd
		   Es werden alle Zeilen der Passwortdatei angezeigt, bei  denen die UID im Bereich 100 -299 liegt.
     [^:]    Negation der Klasse, steht ür alle Zeichen ausser  :
     [^:]*:  Erst alle Zeichen ausser Doppelpunkt in beliebiger Menge gefolgt von Doppelpunkt
     0*      Beliebige Anzahl führende Nullen (auch keine)

  Achtung:  In der Shell erfolgt die Negation durch  [!:]



  grep '^[^:]*::' /etc/passwd 
       Benutzer ohne Passwort finden
   [^:]*:   Jedes Zeichen mit Ausnahme : und davon beliebig viele
    :       gefolgt von weiterem :, d.h. das Passwortfeld ist leer.


 In einer Textdatei befinden sich Zeilen mit Steuerzeichen, die mit einem Punkt
 eingeleitet werden (z.B. Steuerzeichen  für nroff).
  .PA
  .UK
  grep '^\.UK' < textfile 
        |____________  Suchmuster beginnt am Zeilenanfang
         |____________ entwertet den nachfolgenden Punkt als Metazeichen

  cat textfile | grep -v '^\.'
             es werden alle Zeilen ausgegeben, die das Suchmuster nicht enthalten.