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
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
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
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
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
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
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
[...]
/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
[...]
/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 ]
© 2004-2021 by Georg Kainzbauer