Nachdem wir gelernt haben, wie man Funktionen in Bash-Skripten erstellt, befassen wir uns nun mit Textverarbeitung und Automatisierung. Mit den richtigen Tools lassen sich Daten und Logdateien effizient auswerten, transformieren und automatisch verarbeiten.
1. Textverarbeitung in Bash
Bash bietet zahlreiche Möglichkeiten, Text direkt in Skripten zu manipulieren:
1.1 Zeichenketten verarbeiten
text="Hallo Welt"
echo ${text^^} # Großbuchstaben: HALLO WELT
echo ${text,,} # Kleinbuchstaben: hallo welt
echo ${text:0:5} # Teilstring: Hallo
1.2 Ersetzen von Text
text="Hallo Welt"
echo ${text/Welt/Linux} # Ausgabe: Hallo Linux
2. Externe Tools für Textverarbeitung
2.1 grep – Muster in Texten finden
grep "Fehler" logfile.txt
-i
→ Groß-/Kleinschreibung ignorieren
-r
→ Rekursive Suche
2.2 sed – Suchen und Ersetzen in Dateien
sed -i 's/alt/neu/g' datei.txt
-i
→ Datei direkt änderng
→ alle Vorkommen ersetzen
2.3 awk – Spaltenweise Verarbeitung
awk '{print $1, $3}' logfile.txt
→ Gibt die 1. und 3. Spalte aus jeder Zeile aus.
3. Automatisierte Log-Verarbeitung
Beispiel: Alle Fehlerzeilen aus einer Logdatei extrahieren und in eine separate Datei speichern:
grep "ERROR" /var/log/syslog > fehler.log
Mit Zeitstempel versehen:
grep "ERROR" /var/log/syslog | awk '{print strftime("[%Y-%m-%d %H:%M:%S]"), $0}' > fehler.log
4. Aufgaben automatisieren
4.1 cron – Zeitgesteuerte Ausführung
Mit cron
lassen sich Skripte regelmäßig ausführen:
crontab -e
Beispiel: Täglich um 2 Uhr ausführen
0 2 * * * /home/user/backup.sh
4.2 at – Einmalige Ausführung
Ein Befehl, der einmalig zu einem bestimmten Zeitpunkt ausgeführt wird:
echo "/home/user/skript.sh" | at 14:00
5. Praxisbeispiele
5.1 Automatisches Backup mit Log
#!/bin/bash
ziel="/home/user/backup"
mkdir -p "$ziel"
cp -r /home/user/Dokumente "$ziel"
echo "Backup abgeschlossen am $(date)" >> /var/log/backup.log
5.2 Logdateien täglich komprimieren
#!/bin/bash
for file in /var/log/*.log; do
gzip "$file"
done
5.3 Alte Backups automatisch löschen
#!/bin/bash
find /home/user/backup -type f -mtime +30 -delete
→ Löscht alle Dateien, die älter als 30 Tage sind.
6. Zusammenfassung
Werkzeug | Zweck | Beispiel |
---|---|---|
grep | Text durchsuchen | grep Fehler datei.txt |
sed | Suchen und Ersetzen | sed -i 's/alt/neu/g' datei.txt |
awk | Spaltenverarbeitung | awk '{print $1, $3}' datei.txt |
cron | Regelmäßige Ausführung | 0 2 * * * skript.sh |
at | Einmalige Ausführung | `echo „skript.sh“ |
Schreibe einen Kommentar