Linux Fortgeschrittene Befehle

4 Power-Tools
Vier mächtige Linux-Befehle für Textverarbeitung und Suche: grep · find · awk · sed Diese Befehle sind unverzichtbar für die Arbeit mit Log-Dateien, Textverarbeitung, Skripting und Datenanalyse. Sie gehören zum Standard-Werkzeugkasten jedes Linux-Administrators und Entwicklers.

grep – Text durchsuchen

grep [Optionen] Muster [Datei(en)]
grep -ri "fehler" /var/log/

grep (Global Regular Expression Print) durchsucht Textdateien nach einem Muster (Suchbegriff oder regulärer Ausdruck) und gibt die gefundenen Zeilen aus.

Häufige Optionen

Option Beschreibung
-i Groß-/Kleinschreibung ignorieren
-r / -R Rekursiv in Unterverzeichnissen suchen
-n Zeigt die Zeilennummer der Treffer an
-v Kehrt um: Nur Zeilen ohne das Muster ausgeben
-c Nur die Anzahl der Treffer anzeigen
-l Nur Dateinamen mit Treffern anzeigen
-E Erweiterte reguläre Ausdrücke (ERE) aktivieren
-A 3 Zeige 3 Zeilen nach dem Treffer (After)
-B 3 Zeige 3 Zeilen vor dem Treffer (Before)
-C 3 Zeige 3 Zeilen Kontext (After + Before)
Beispiele
grep "error" logfile.txt # Suche nach "error"
grep -i "fehler" /var/log/syslog # Ignoriere Groß-/Kleinschreibung
grep -rni "TODO" ./src/ # Rekursiv mit Zeilennummern
grep -v "^#" config.conf # Alle Zeilen außer Kommentaren (#)
grep -c "ERROR" app.log # Anzahl der Fehler zählen
grep -C 2 "database" logfile.txt # Zeige 2 Zeilen Kontext
Typische Ausgabe von grep -rn "TODO" .:
./src/main.py:42: # TODO: Implement error handling
./src/utils.py:15: # TODO: Add logging
Tipp: Mit grep -E aktivieren Sie erweiterte reguläre Ausdrücke – ideal für komplexe Suchmuster. Für noch mehr Power kombinieren Sie grep mit wc -l zum Zählen von Zeilen.

find – Dateien suchen

find [Pfad] [Optionen] [Aktion]
find /home -name "*.log" -mtime -7

find durchsucht Verzeichnisbäume nach Dateien/Ordnern, die bestimmten Kriterien entsprechen – wie Name, Größe, Änderungsdatum, Berechtigungen.

Häufige Optionen

Option Beschreibung
-name "Muster" Suche nach Dateinamen (Muster)
-iname "Muster" Wie -name, aber Groß-/Kleinschreibung ignorierend
-type f / d Nur Dateien (f) oder Verzeichnisse (d)
-size +100M Dateien größer als 100 MB
-mtime -7 In den letzten 7 Tagen geändert
-mtime +30 Vor mehr als 30 Tagen geändert
-user name Dateien eines bestimmten Benutzers
-perm 755 Dateien mit bestimmten Rechten
-exec Befehl {} \; Führe Befehl für jede gefundene Datei aus
-delete Löscht die gefundenen Dateien (⚠️ vorsichtig!)
Beispiele
find /var/log -name "*.log" # Alle .log-Dateien finden
find /home -type d -name "backup" # Ordner mit Namen "backup"
find /var -size +100M # Dateien über 100 MB
find /tmp -mtime +30 # Dateien älter als 30 Tage
find . -name "*.tmp" -exec rm -v {} \; # .tmp-Dateien löschen
find /home -user max -type f # Dateien von Benutzer "max"
Tipp: find kann sehr mächtig sein. Kombinieren Sie mehrere Bedingungen mit -a (UND) oder -o (ODER). Für große Verzeichnisse verwenden Sie find ... -exec ... um Platz zu sparen.

awk – Text analysieren

awk 'Muster { Aktion }' [Datei]
awk '{ print $1, $3 }' /var/log/auth.log

awk ist eine vollwertige Skriptsprache zur Verarbeitung von strukturierten Textdaten (Spalten/CSV). Es liest zeilenweise, teilt jede Zeile in Felder und führt Aktionen aus.

Häufige Verwendungen

Konstrukt Beschreibung
$0 Die gesamte Zeile
$1, $2, ... Das erste, zweite ... Feld (getrennt durch Leerzeichen)
NF Anzahl der Felder in der aktuellen Zeile
NR Aktuelle Zeilennummer
FS Feldtrenner (default: Leerzeichen)
BEGIN { ... } Code vor der Verarbeitung
END { ... } Code nach der Verarbeitung
/Muster/ Nur Zeilen verarbeiten, die das Muster enthalten
-F "," Feldtrenner auf "," setzen (CSV)
Beispiele
awk '{ print $1 }' datei.txt # Erste Spalte ausgeben
awk '{ print NR ": " $0 }' datei.txt # Zeilennummer + Zeile
awk '/ERROR/ { print $0 }' log.txt # Zeilen mit ERROR ausgeben
awk -F "," '{ print $2 }' data.csv # CSV: zweite Spalte
awk 'BEGIN { sum=0 } { sum += $3 } END { print sum }' daten.txt # Summe der dritten Spalte
ps aux | awk 'NR>1 { print $1, $11 }' # Benutzer + Prozess aus ps
Beispiel: Summe der 3. Spalte berechnen
Eingabe: 1 2 10
Eingabe: 4 5 20
Ausgabe: 30
Tipp: awk ist extrem vielseitig – von einfachen Ausgaben bis zu komplexen Skripten mit Bedingungen, Schleifen und Funktionen. Ideal für die Datenaufbereitung aus Log-Dateien oder CSV.

sed – Text ersetzen

sed 's/alt/neu/g' [Datei]
sed -i 's/fehler/error/g' datei.txt

sed (Stream Editor) ist ein zeilenbasierter Texteditor für die Kommandozeile. Er wird hauptsächlich zum Ersetzen, Löschen und Extrahieren von Text in Streams und Dateien verwendet.

Häufige Verwendungen

Konstrukt Beschreibung
s/alt/neu/ Ersetzt das erste Vorkommen pro Zeile
s/alt/neu/g Ersetzt alle Vorkommen pro Zeile (global)
d Löscht die Zeile
p Gibt die Zeile aus (mit -n)
-i Änderungen direkt in der Datei speichern
-i.bak Backup der Originaldatei anlegen
/Muster/d Löscht Zeilen, die das Muster enthalten
2,5d Löscht die Zeilen 2 bis 5
Beispiele
sed 's/alt/neu/' datei.txt # Erstes "alt" pro Zeile ersetzen
sed 's/alt/neu/g' datei.txt # Alle "alt" pro Zeile ersetzen
sed -i 's/fehler/error/g' log.txt # Direkt in Datei speichern
sed -i.bak 's/old/new/' config.conf # Backup config.conf.bak
sed '/^#/d' config.txt # Löscht alle Kommentarzeilen (#)
sed '1,5d' datei.txt # Löscht die ersten 5 Zeilen
sed 's/[0-9]\+/(&)/g' datei.txt # Alle Zahlen in Klammern setzen
Beispiel: Textersetzung
Eingabe: "Das ist ein Fehler in der Logik."
Befehl: sed 's/Fehler/ERROR/g'
Ausgabe: "Das ist ein ERROR in der Logik."
Achtung: sed -i ändert die Datei direkt – ohne Rückfrage! Verwenden Sie -i.bak für ein Backup oder testen Sie zuerst ohne -i.

Quick Summary

grep
Suchen in Texten
find
Dateien suchen
awk
Daten analysieren
sed
Text ersetzen