init at home
This commit is contained in:
@@ -0,0 +1,202 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user