grep

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
Print Friendly, PDF & Email