BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Dateien durchsuchen mit grep

grep(1) durchsucht Dateien nach Suchbegriffen und gibt diese dann aus. Dabei wird immer die ganze Zeile mit dem gefundenen Suchbegriff ausgegeben. grep wird wie folgt benutzt:

# grep [Optionen] <Suchbegriff> <Datei>

Möchte man nach test1 in der testdatei suchen, so kann man dies folgendermassen tun:

# more testdatei
test1 bli
test2 bla
test3 blo

# grep test1 testdatei
test1 bli

Natürlich kann man die Ausgabe eines Programms mit einer Pipe direkt an grep weiterleiten:

# more testdatei | grep test2
test2 bla

Soll die Gross-/Kleinschreibung bei der Suche ignoriert werden, kann die -i Option verwendet werden:

# grep -i Test3 testdatei
test3 blo

Ein Begriff kann bei der Suche mit der -v Option ausgeschlossen werden, das heisst alle Zeilen die diesen Begriff nicht beinhalten werden angezeigt:

# grep -v test2 testdatei
test1 bli
test3 blo

Sollen mehrere Begriffe ausgeschlossen werden, so kommt egrep(1) zum Zuge. Die auszuschliessenden Begriffe sind mit einer Pipe zu trennen.

# egrep -v 'test1|test3' testdatei
test2 bla

Genauso wie auschliessen, lassen sich auch mehrere Suchbegriffe mit egrep kombinieren:

# egrep 'test1|test3' testdatei
test1 bli
test3 blo

Mit grep können auch Verzeichnisse rekursiv durchsuchen werden. Alle Dateien eines Verzeichnis und die Dateien der verschiedenen Unterverzeichnisse werden so durchsucht:

# grep -R <Suchbegriff> <Verzeichnis>

Möchte man nun statt den gefundenen Zeilen die Dateinamen ausgeben, in welchen der Suchbegriff gefunden wurde, kann man die -l Option hinzufügen:

# grep -Rl miau /usr/src/
/usr/src/contrib/ntp/html/notes.html
/usr/src/share/dict/web2

Für die Suchbegriffe können natürlich auch reguläre Ausdrücke (Regex) verwendet werden. Diese und alle weiteren Optionen die grep besitzt, sind in der Manpage grep(1) ausführlich beschrieben.

grep und egrep sind natürlich auf FreeBSD und OpenBSD im Basissystem vorhanden.

Comments (1)  Permalink