grep -r haus documents/texte/
sucht rekursiv in texte nach dem Wort haus
grep -l -r suchwort /home/stefan/bin/*
durchsucht ab dem Verzeichnis /bin/ alle Dateien rekursiv (-r) nach dem Inhalt „Suchwort“ und gibt nur die Dateinamen aus (-l)
grep -i ROot /etc/passwd
sucht nach „root“ ohne Beachtung der Groß- und Kleinschreibung
grep verwendet reguläre Ausdrücke:
Suchmuster | Passt auf |
Tiger | Die Zeichenkette Tiger |
^Tiger | Tiger am Zeilenanfang. |
Tiger | Tiger am Zeilenende. |
^Tiger$ | Tiger ist das einzige Wort auf der Zeile. |
[tT]iger | tiger oder Tiger. |
T[aeiou]ger | 5 Zeichen, davon 4 wie angegeben. Das zweite Zeichen ist ein beliebiger Vokal. |
T[^aeiou]ger | 5 Zeichen, davon 4 wie angegeben. Das zweite Zeichen ist jedes Zeichen außer einem Vokal. |
^…$ | Jede Zeile, die genau drei Zeichen enthält. |
^\. | Jede Zeile, die mit einem Punkt beginnt. Der \ maskiert wie gewohnt. |
^[^.] | Jede Zeile, die nicht mit einem Punkt beginnt. |
Tiger.* | Tiger, gefolgt von einer auch leeren beliebigen Zeichenfolge: Tiger, Tigerin, Tigerhöhle… |
[A-Z][A-Z]* | Ein oder mehrere Großbuchstaben |
[A-Z].* | Ein Großbuchstabe, gefolgt von einer auch leeren, beliebigen Zeichenfolge. |
[A-Z]* | Eine auch leere Folge von Großbuchstaben. |
Weitere Beispiele von http://www.admin-magazin.de/News/Tipps/ADMIN-Tipp-Grep-mit-Grips?utm_source=ADMIN+Newsletter&utm_campaign=ADMIN-Newsletter-2013-17&utm_medium=email :
Wie man mit grep wirklich nur das ausfiltert, was man haben will.
Gesetzt den Fall man grept nach einem Prozess, etwa:
jcb@hercules:~$ ps aux | grep firefox jcb 2665 13.7 4.9 973172 194812 ? Sl 16:12 0:15 /usr/lib/firefox/firefox jcb 2752 0.0 0.0 15092 924 pts/2 R+ 16:14 0:00 grep --color=auto firefox
Ohne spezielle Vorkehrungen filtert man immer die das grep-Kommando als zusätzliche Zeile mit aus, weil es ebenfalls den Suchbegriff (hier: firefox) enthält.
Nun kann man sich bekanntlich dagegen wehren, indem man in einem zweiten Schritt die Ergebniszeilen wieder ausschließt, die das Wort grep enthalten:
jcb@hercules:~$ ps aux | grep firefox | grep -v grep jcb 2665 11.4 4.9 965040 195316 ? Sl 16:12 0:18 /usr/lib/firefox/firefox
Es geht aber auch noch einen Tick eleganter: Nämlich, indem man im Suchbegriff einen beliebigen Buchstaben als einelementige Zeichenklasse eines regulären Ausdrucks definiert. An der Suche ändert das nichts. Weil nun aber der wirksame Suchbegriff und seine grep-relevante, schriftliche Darstellung zwei verschiedene Dinge sind, erhält man nur noch eine Ergebniszeile. Das geht so
jcb@hercules:~$ ps aux | grep firef[o]x jcb 2665 10.8 4.9 965040 195004 ? Sl 16:12 0:20 /usr/lib/firefox/firefox