203 lines
3.4 KiB
Markdown
203 lines
3.4 KiB
Markdown
# 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
|
|
|
|
- [[find]] - Dateien nach Namen/Eigenschaften suchen
|
|
- [[sed]] - Stream-Editor für Textmanipulation
|
|
- [[awk]] - Textverarbeitung und Datenextraktion
|
|
- [[ls]] - Ausgabe von ls filtern
|