Good to Know Database

Dateien mit grep durchsuchen


Mit dem Programm grep kann man Dateien und Ausgaben anderer Befehle nach Zeichenketten durchsuchen beziehungsweise filtern.

Der folgende Aufruf durchsucht die Datei /etc/passwd nach allen Vorkommen des Strings georg und liefert nur die gefundenen Zeilen zurück.

root@ubuntu904:~# grep georg /etc/passwd
georg:x:1000:1000:Georg Kainzbauer,,,:/home/georg:/bin/bash

grep unterscheidet standardmäßig zwischen Groß- und Kleinschreibung. Dies können Sie mit der Option -i abschalten.

root@ubuntu904:~# grep -i GEORG /etc/passwd
georg:x:1000:1000:Georg Kainzbauer,,,:/home/georg:/bin/bash

Die Option -v invertiert die Suche. Das heißt, es werden alle Zeilen ausgegeben, in welchen das Suchmuster nicht vorkommt.

root@ubuntu904:~# grep -v georg /etc/passwd

Mit der Option -c wird die Anzahl der gefundenen Zeilen ausgegeben.

root@ubuntu904:~# grep -c georg /etc/passwd
1

Wenn Sie grep in einem Skript verwenden wollen und nur überprüfen wollen ob in einer Datei ein String vorkommt, können Sie mit der Option -q die Ausgabe abschalten. Durch den Rückgabewert können Sie überprüfen ob der String gefunden wurde ($? == 0) oder nicht ($? == 1).

root@ubuntu904:~# grep -q georg /etc/passwd; echo $?
0

Die Zeilennummer in welcher sich der Treffer befinden können Sie mit der Option -n anzeigen lassen.

root@ubuntu904:~# grep -n georg /etc/passwd
31:georg:x:1000:1000:Georg Kainzbauer,,,:/home/georg:/bin/bash

Bisher wurde immer eine Datei durchsucht, wenn Sie aber die Ausgabe eines Befehls durchsuchen wollen, müssen Sie diese wie im folgenden Beispiel an grep weiterleiten.

root@ubuntu904:~# cat /etc/passwd | grep georg
georg:x:1000:1000:Georg Kainzbauer,,,:/home/georg:/bin/bash

Neben einzelnen Dateien können Sie auch ganze Verzeichnisse nach dem Suchmuster durchsuchen. Dazu geben Sie die Option -r und das zu durchsuchende Verzeichnis an. Angezeigt wird dann der Dateiname und die Zeile mit dem Suchtreffer.

root@ubuntu904:~# grep -r georg /etc/
/etc/passwd-:georg:x:1000:1000:Georg Kainzbauer,,,:/home/georg:/bin/bash
/etc/group:adm:x:4:georg
/etc/group:dialout:x:20:georg
/etc/group:cdrom:x:24:georg
/etc/group:plugdev:x:46:georg
[...]

Um nur die Dateinamen anzuzeigen verwenden Sie zusätzlich die Option -l.

root@ubuntu904:~# grep -rl georg /etc/
/etc/shadow
/etc/passwd-
/etc/group
/etc/gshadow-
/etc/gshadow
[...]


Dieser Eintrag wurde am 17.06.2009 erstellt und zuletzt am 22.02.2012 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_7_654.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer