14. Juni 2021, 11:10
Lesezeit: ca. 2 Min

Simples Säuberungsskript

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

© 2021 Tomas Jakobs - Impressum und Datenschutzhinweis