Please notice: This article is more than 3 years old
Content, Source code or links may no longer be correct in the meantime.
Please notice: This article is more than 3 years old
Content, Source code or links may no longer be correct in the meantime.
The simple, unspectacular things in life bring you ahead the curve. This bash script, for instance, removes all comments from a configuration file. In order that no empty lines remain instead, these are subsequently removed afterwards. What remains is the essence: what really counts.
The usage is straightforward: Just add the desired config file(s) as parameters and you’re done!
#!/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;
This simplifies automation and above all the search in page-long comments within a config file. However, be careful! Behind every line theres much of wisdom: Everything after a # sign is mercilessly removed, really everything! Take the following line as example:
test = "https://link#something"
this will become
test = "https://link
The syntax (missing closing quotation marks) as well as the content itself are no longer correct and lead to errors. Therefore I always enforce an automatic backup of the original. Unfortunately, fine-tuning the RegEx is not helpfully either, due to the fact that comments often indented with spaces or tabs or come after a command.
Know your tools!
Stay Healthy!
Tomas Jakobs