Files
it-know-how/Computerkram/Linux/BASH Basics/grep.md
T
2026-03-27 12:41:00 +01:00

3.4 KiB

grep - Textsuche in Dateien

Der grep-Befehl durchsucht Dateien oder Textströme nach Mustern (Strings oder reguläre Ausdrücke).

Grundsyntax

grep [OPTIONEN] MUSTER [DATEI...]

Einfache Suche

grep "suchtext" datei.txt

In mehreren Dateien:

grep "suchtext" *.txt

Rekursiv in Verzeichnissen:

grep -r "suchtext" /pfad/zum/verzeichnis

Wichtige Optionen

Groß-/Kleinschreibung

grep -i "suchtext" datei.txt    # case-insensitive

Zeilen mit Kontext

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

grep -l "suchtext" *.txt        # Dateien mit Treffer
grep -L "suchtext" *.txt        # Dateien ohne Treffer

Zeilennummern anzeigen

grep -n "suchtext" datei.txt

Anzahl der Treffer

grep -c "suchtext" datei.txt

Invertierte Suche (nicht enthalten)

grep -v "suchtext" datei.txt

Zeigt alle Zeilen, die den Suchtext NICHT enthalten.

Ganzes Wort

grep -w "wort" datei.txt

Findet "wort", aber nicht "worte" oder "hauptwort".

Reguläre Ausdrücke

Einfache Regex (Basic)

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

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

grep -P "\d{3}-\d{4}" datei.txt

Praktische Anwendungsfälle

Logfiles durchsuchen

grep -i "error" /var/log/syslog
grep -E "error|warning|critical" /var/log/syslog

Mit Zeitstempel

grep "2025-11-07" /var/log/application.log

Konfigurationsdateien

# Alle nicht-kommentierten Zeilen
grep -v "^#" /etc/ssh/sshd_config | grep -v "^$"

In komprimierten Dateien

zgrep "suchtext" datei.log.gz

Mit find kombinieren

find . -name "*.log" -exec grep -l "ERROR" {} +

Mehrere Muster aus Datei

grep -f muster.txt datei.txt

muster.txt:

fehler
warnung
critical

Pipe-Verwendung

ps aux | grep firefox
cat datei.txt | grep -v "^#" | grep "wichtig"
dmesg | grep -i usb

Farbige Ausgabe

grep --color=auto "suchtext" datei.txt

Alias in .bashrc setzen:

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:

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