Kommentare entfernen

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der TIPPs & Tricks Sammlung.
Terminals / Shells X Portage System Dateisysteme Kernel Netzwerk Sonstiges alphabetischer Tipp Index

Inhaltsverzeichnis

[Bearbeiten] Vorwort

Ich war es leid, bei Konfigurationsdateien ständig die Kommentarzeilen von den wirklichen Optionen zu trennen, wenn ich nach einer bestimmten Einstellung suchen muss. Auch wenn man seine Konfiguration hilfesuchend an eine Mailingliste oder ein Forum senden möchte, stören die Kommentare mehr als dass sie nützen, machen die Konfiguration unübersichtlich und brauchen nur unnötig Speicherplatz auf den Servern.

[Bearbeiten] Skript zum Entfernen von Kommentaren

Also habe ich ein kleines Shellscript namens confcat geschrieben, das die Kommentarzeilen einer konfigurationdatei weglässt und nur den wichtigen Teil anzeigt:

#!/bin/bash
# Code to cat a config file removing all comments and blank lines.

grep -vh '^#' "$@" | grep -v '^$'

Statt dem obigen command sollte man eventuell das Folgende verwenden, damit auch Kommentare entfernt werden, die eingerückt sind. Ausserdem entfernt obiges auch nicht alle Leerzeilen, nämlich nicht die, die mindestens ein Leerzeichen am Zeilenanfang enthalten. Auch das erledigt das folgende Command:

grep -vh '^[ ]*#' "$@" | grep -v '^[ ]*$'

Dies muss man lediglich in einer Datei namens confcat speichern, die im $PATH ist (z.B. ~/bin oder /usr/local/bin) und diese Datei dann ausführbar machen.

Ausführbar machen:

chmod 755 /pfad/zu/confcat

[Bearbeiten] Beispielanwendungen

Benutzen kann man es wie folgt:

confcat /pfad/zur/konfigurationsdatei

Das Skript löscht bei der Ausgabe Zeilen, die mit einem # beginnen und leere Zeilen weg.

Wie viel das wirklich bringt, zeigen die folgenden Vergleiche:

$ confcat /etc/make.conf | wc -l
     9
$ cat /etc/make.conf | wc -l
   156
$ confcat /etc/X11/XF86Config | wc -l
    82
$ cat /etc/X11/XF86Config | wc -l
   462
$ confcat /etc/mutt/Muttrc | wc -l
    19
$ cat /etc/mutt/Muttrc | wc -l
  3690
$ confcat /usr/src/linux/.config | wc -l
   200
$ cat /usr/src/linux/.config | wc -l
  1119

Und noch ein tatsächliches Beispiel, wenn ich z.B. die /etc/make.conf anzeigen lasse:

$ confcat /etc/make.conf
USE="-* x86 crypt berkdb pam ncurses readline ssl tcltk tcpd X mmx xml2 \
truetype java gtk jpeg tiff png python 3dfx voodoo3 opengl imap apache2 \
postgres sasl"
CHOST="i686-pc-linux-gnu"
CFLAGS="-O3 -march=pentium3 -fprefetch-loop-arrays -funroll-loops -pipe"
CXXFLAGS="${CFLAGS}"
PORTDIR_OVERLAY="/usr/local/portage"
GENTOO_MIRRORS="http://www.mirror.ac.uk/sites/www.ibiblio.org/gentoo/"
SYNC="rsync://rsync.uk.gentoo.org/gentoo-portage"

Ich hoffe, jemand findet das auch nützlich. :)

[Bearbeiten] Alternativen

Das Entfernen von Kommentaren geht auch ein wenig einfacher:

egrep -v "^#|^$" [filename]

oder:

cat $DATEINAME | sed 's/#.*//;/^ *$/d'

Um zum Beispiel die Kommentare und Leerzeilen aus der /etc/make.conf zu entfernen gibt man folgendes ein:

cat /etc/make.conf | sed 's/#.*//;/^ *$/d'

[Bearbeiten] Quelle

Original Thread

'Persönliche Werkzeuge