Seite anzeigenÄltere VersionenLinks hierherNach oben Diese Seite ist nicht editierbar. Sie können den Quelltext sehen, jedoch nicht verändern. Kontaktieren Sie den Administrator, wenn Sie glauben, dass hier ein Fehler vorliegt. ====== grep | Muster in Dateien und Ausgaben suchen ====== Das Kommando grep (Global Regular Expression Print) wird verwendet, um Textmuster in Dateien oder der Standardausgabe zu durchsuchen.\\ Es unterstützt einfache Zeichenfolgen, reguläre Ausdrücke und kann sogar rekursiv in Verzeichnissen suchen.\\ \\ ==== Grundlegende Syntax ==== <code bash> grep [OPTIONEN] "MUSTER" DATEI </code> MUSTER: Das zu suchende Wort oder der reguläre Ausdruck. DATEI: Die Datei(en), in denen gesucht wird. Falls keine Datei angegeben wird, liest grep aus der Standardeingabe (stdin). \\ **Beispiel:**\\ Sucht nach dem Wort „Fehler“ in logfile.txt. <code bash> grep "Fehler" logfile.txt </code> \\ ==== Wichtige Optionen ==== |**Option**|**Beschreibung**| |-i|Ignoriert Groß- und Kleinschreibung| |-v|Zeigt alle Zeilen, die nicht das Muster enthalten| |-r|Durchsucht alle Dateien in einem Verzeichnis rekursiv| |-c|Gibt die Anzahl der Treffer (Zeilen) aus| |-n|Zeigt die Zeilennummern der Treffer an| |-l|Zeigt nur die Namen der Dateien an, die das Muster enthalten| |-o|Gibt nur den gefundenen Text aus (nicht die ganze Zeile)| |-w|Sucht nach exakten Wortübereinstimmungen| |-A N|Zeigt N Zeilen nach dem Treffer an| |-B N|Zeigt N Zeilen vor dem Treffer an| |-C N|Zeigt N Zeilen vor und nach dem Treffer an| |--color=auto|Hebt Treffer farbig hervor| \\ ==== Beispiele zur Nutzung von grep ==== \\ === Einfache Suche === Sucht nach „root“ in der Datei /etc/passwd.\\ <code bash> grep "root" /etc/passwd </code> \\ === Groß-/Kleinschreibung ignorieren (-i) === Findet „error“, „ERROR“, „Error“ usw.\\ <code bash> grep -i "error" logfile.txt </code> \\ === mgekehrte Suche (-v) === Zeigt alle Zeilen, die nicht „192.168.1.1“ enthalten.\\ <code bash> grep -v "192.168.1.1" access.log </code> \\ === Rekursive Suche in Verzeichnissen (-r) === Durchsucht alle Dateien in /home/user/projekt nach „TODO“.\\ <code bash> grep -r "TODO" /home/user/projekt </code> \\ === Anzahl der Treffer (-c) === Gibt nur die Anzahl der Treffer aus.\\ <code bash> grep -c "error" logfile.txt </code> \\ === Zeilennummern anzeigen (-n) === Gibt Zeilennummern aus, wo „MainFunction“ in code.c steht.\\ <code bash> grep -n "MainFunction" code.c </code> \\ === Nur Dateinamen mit Treffern anzeigen (-l) === Zeigt nur die Namen der Dateien, die „password“ enthalten.\\ <code bash> grep -l "password" *.txt </code> \\ === Nur das gefundene Wort anzeigen (-o) === Gibt nur die gefundenen Warncodes aus (WARN123, WARN456…).\\ <code bash> grep -o "WARN[0-9]*" logfile.txt </code> \\ === Ganze Wörter suchen (-w) === Findet „is“, aber nicht „this“ oder „his“.\\ <code bash> grep -w "is" text.txt </code> \\ === Kontext um Treffer anzeigen (-A, -B, -C) === Zeigt die Zeile mit „ERROR“ und die 3 Zeilen danach.\\ <code bash> grep -A 3 "ERROR" logfile.txt </code> \\ Zeigt die Zeile mit „Login failed“ und die **2 Zeilen davor**.\\ <code bash> grep -B 2 "Login failed" auth.log </code> system.log /code> \\ Zeigt die Treffer plus **2 Zeilen davor und danach**. <code bash> grep -C 2 "Critical"</code> \\ ==== Reguläre Ausdrücke mit grep -E (Erweiterte Suche) ==== \\ Die -E Option erlaubt erweiterte reguläre Ausdrücke (entspricht egrep).\\ |**Regulärer Ausdruck**|**Bedeutung**| |.|Beliebiges Zeichen (außer Zeilenumbruch)| |%%^%%|Beginn einer Zeile| |$|Ende einer Zeile| |[abc]|Entweder „a“, „b“ oder „c“| |[a-z]|Ein Kleinbuchstabe von „a“ bis „z“| |%%[^0-9]%%|Kein Ziffernzeichen (0-9)| |*|0 oder mehr Vorkommen des vorherigen Zeichens| |+|1 oder mehr Vorkommen des vorherigen Zeichens| |?|0 oder 1 Vorkommen| |{n,m}|Zwischen n und m Wiederholungen| |foo\bar|Findet „foo“ oder „bar“| \\ === Beispiele für reguläre Ausdrücke === Sucht nach Zeilen, die mit „user“ + **2 Ziffern** beginnen (`user01`, `user99`). \\ <code bash> grep -E "^user[0-9]{2}" datei.txt </code> \\ Findet Zeilen mit „error“, „fail“ oder „fatal“. \\ <code bash> grep -E "error|fail|fatal" logfile.txt </code> \\ Findet Muster wie `ABC1234`, `XYZ5678`. \\ <code bash> grep -E "[A-Z]{3}[0-9]{4}" data.txt </code> \\ ====grep mit Pipes (|) kombinieren ==== grep wird oft mit anderen Kommandos kombiniert.\\ \\ === ps und grep: Laufende Prozesse filtern === Zeigt nur Firefox-Prozesse. \\ <code bash> ps aux | grep "firefox" </code> \\ === ls und grep: Dateien filtern === Zeigt nur Shell-Skripte (.sh am Ende). \\ <code bash> ls -l | grep ".sh$" </code> === dmesg und grep: Kernel-Logs durchsuchen === \\ Zeigt nur USB-bezogene Meldungen. \\ <code bash> dmesg | grep -i "usb" </code>