Hinweis: Dieser Artikel ist älter als 3 Jahre
Inhalte, Quelltexte oder Links können zwischenzeitlich überholt sein.
Hinweis: Dieser Artikel ist älter als 3 Jahre
Inhalte, Quelltexte oder Links können zwischenzeitlich überholt sein.
Es sind die einfachen, unscheinbaren Dinge im Leben, die einen weiterbringen. So auch dieses Bash-Script, das alle Kommentare aus Konfigurationsdateien entfernt. Damit statt dessen keine Leerzeilen übrig bleiben, werden diese anschliessend mitentfernt. Zurück bleibt die Essenz: Das, was wirklich zählt.
Der Aufruf ist simpel: Die gewünschten Konfigdatei(en) als Parameter diesem Skript mit auf den Weg geben.
#!/bin/bash
# Beseitigt alle Kommentar- und Leerzeilen aus einer Configfile
# Sichert Datei mit Erweiterung .backup und
# erwartet Dateiname oder -liste als Parameter
for FILE in "$@"
do
# Erstellt Sicherungskopie(n)
cp --backup=numbered $FILE $FILE.backup
# Entfernt alle Kommentarzeilen > Arbeitsdatei
sed -e 's/#.*$//' $FILE > $FILE.tmp
# Entfernt alle Leerzeilen aus Arbeitsdatei
sed -i '/^$/d' $FILE.tmp
# Ersetzt Ausgangsdatei mit Arbeitsdatei
mv $FILE.tmp $FILE
done;
Das vereinfacht eine Automatisierung und vor allem die Suche in seitenlangen Kommentarzeilen einer Konfigdatei. Aber Vorsicht! Zu jeder Zeile gibt es mindestens ein Stück an Lebenserfahrung. Alles nach einem #-Zeichen wird gnadenlos entfernt, wirklich alles! Wer z.B. Nachfolgendes in seiner Konfigdatei stehen hat:
test = "https://link#something"
erhält nach Durchlauf des Skriptes ein
test = "https://link
Der Syntax (Anführungszeichen) als auch der Inhalt stimmen nicht mehr und führen zu Fehlern. Daher erzwinge ich immer eine automatische Sicherung des Originals. Eine Anpassung des RegEx auf den Beginn einer Zeile ist leider nicht zielführend, da häufig Kommentare auch mit Leerzeichen oder Tabs eingerückt sind oder nach einem Befehl stehen.
Know your tools!
In diesem Sinne,
einen guten Start in die neue Woche!
Tomas Jakobs