# grep - Textsuche in Dateien Der `grep`-Befehl durchsucht Dateien oder Textströme nach Mustern (Strings oder reguläre Ausdrücke). ## Grundsyntax ```bash grep [OPTIONEN] MUSTER [DATEI...] ``` ## Einfache Suche ```bash grep "suchtext" datei.txt ``` In mehreren Dateien: ```bash grep "suchtext" *.txt ``` Rekursiv in Verzeichnissen: ```bash grep -r "suchtext" /pfad/zum/verzeichnis ``` ## Wichtige Optionen ### Groß-/Kleinschreibung ```bash grep -i "suchtext" datei.txt # case-insensitive ``` ### Zeilen mit Kontext ```bash grep -A 3 "suchtext" datei.txt # 3 Zeilen danach grep -B 3 "suchtext" datei.txt # 3 Zeilen davor grep -C 3 "suchtext" datei.txt # 3 Zeilen davor und danach ``` ### Nur Dateinamen anzeigen ```bash grep -l "suchtext" *.txt # Dateien mit Treffer grep -L "suchtext" *.txt # Dateien ohne Treffer ``` ### Zeilennummern anzeigen ```bash grep -n "suchtext" datei.txt ``` ### Anzahl der Treffer ```bash grep -c "suchtext" datei.txt ``` ### Invertierte Suche (nicht enthalten) ```bash grep -v "suchtext" datei.txt ``` Zeigt alle Zeilen, die den Suchtext NICHT enthalten. ### Ganzes Wort ```bash grep -w "wort" datei.txt ``` Findet "wort", aber nicht "worte" oder "hauptwort". ## Reguläre Ausdrücke ### Einfache Regex (Basic) ```bash grep "^Start" datei.txt # Zeilen, die mit "Start" beginnen grep "Ende$" datei.txt # Zeilen, die mit "Ende" enden grep "^$" datei.txt # Leere Zeilen ``` ### Extended Regex ```bash grep -E "fehler|warnung" datei.txt # fehler ODER warnung grep -E "[0-9]{3}-[0-9]{4}" datei.txt # Telefonnummern grep -E "^(root|admin)" /etc/passwd # Zeilen mit root oder admin am Anfang ``` ### Perl-kompatible Regex ```bash grep -P "\d{3}-\d{4}" datei.txt ``` ## Praktische Anwendungsfälle ### Logfiles durchsuchen ```bash grep -i "error" /var/log/syslog grep -E "error|warning|critical" /var/log/syslog ``` ### Mit Zeitstempel ```bash grep "2025-11-07" /var/log/application.log ``` ### Konfigurationsdateien ```bash # Alle nicht-kommentierten Zeilen grep -v "^#" /etc/ssh/sshd_config | grep -v "^$" ``` ### In komprimierten Dateien ```bash zgrep "suchtext" datei.log.gz ``` ### Mit find kombinieren ```bash find . -name "*.log" -exec grep -l "ERROR" {} + ``` ### Mehrere Muster aus Datei ```bash grep -f muster.txt datei.txt ``` **muster.txt:** ``` fehler warnung critical ``` ## Pipe-Verwendung ```bash ps aux | grep firefox cat datei.txt | grep -v "^#" | grep "wichtig" dmesg | grep -i usb ``` ## Farbige Ausgabe ```bash grep --color=auto "suchtext" datei.txt ``` Alias in `.bashrc` setzen: ```bash alias grep='grep --color=auto' ``` ## Alternative Tools - **ripgrep (rg)** - sehr schnell, modern, empfohlen - **ag (The Silver Searcher)** - schneller als grep - **ack** - für Code-Suche optimiert Beispiel mit ripgrep: ```bash rg "suchtext" /pfad # automatisch rekursiv, ignoriert .gitignore ``` ## Zusammenfassung wichtiger Optionen | Option | Beschreibung | |--------|--------------| | `-i` | Case-insensitive | | `-r` | Rekursiv | | `-n` | Mit Zeilennummern | | `-c` | Anzahl der Treffer | | `-l` | Nur Dateinamen | | `-v` | Invertiert (nicht enthalten) | | `-w` | Ganzes Wort | | `-E` | Extended Regex | | `-A/-B/-C` | Kontext anzeigen | ## Siehe auch - [[IT-Know-How/Linux/BASH Basics/find]] - Dateien nach Namen/Eigenschaften suchen - [[IT-Know-How/Linux/BASH Basics/sed]] - Stream-Editor für Textmanipulation - [[IT-Know-How/Linux/BASH Basics/awk]] - Textverarbeitung und Datenextraktion - [[IT-Know-How/Linux/BASH Basics/ls]] - Ausgabe von ls filtern