Linux Terminal: Bash-Scripting – Textverarbeitung & Automatisierung

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 ändern
  • g → 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

WerkzeugZweckBeispiel
grepText durchsuchengrep Fehler datei.txt
sedSuchen und Ersetzensed -i 's/alt/neu/g' datei.txt
awkSpaltenverarbeitungawk '{print $1, $3}' datei.txt
cronRegelmäßige Ausführung0 2 * * * skript.sh
atEinmalige Ausführung`echo „skript.sh“

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert