Häufig möchte ich Konfigurationsdateien von überflüssigen Ballast befreien und alles entsorgen, was mit einer Raute (#) beginnt. Dieses gelingt mir normalerweise mit:
egrep '^[^#]' /etc/apache2/apache2.conf
Doch am Apache scheitert es, denn obere Zeile bedingt, das eben die Raute am Anfang steht. Findet sich jedoch da ein Leerzeichen (od. mehrere) und dann erst die Raute, erwische ich diese Zeilen nicht. Wäre nett, wenn mich da mal jemand in die richtige Richtung führen könnte.
Deine IP ist:
38.107.179.209

6 Kommentare
Bei grep gibt es auch Zeichenklassen, eine davon ist [:space:]
Du könntest also vielleicht
egrep –invert-match ‘^[:space:]*#’ /etc/apache2/apache2.conf
benutzen.
Ist ungetestet, aber logisch.
egrep -v ‘^ *(#|$)’ /etc/blah
@Jens genau das selbe habe ich auch probiert, hat aber nicht geklappt, aber das was Martin geschickt hatm it dem “$” Zeichen, das hat funktioniert.
@Martin, kannst du mir erklären, warum $ klappt, aber nicht [:space:] ?
Lustig, es kann noch so logisch sein und trotzdem nicht funtkionieren
Jetzt habe ich es versucht und siehe da es geht mit:
egrep -v ‘^[[:space:]]*#’
Vorteil ist es werden auch Tabs erkannt.
@Martin deine Lösung funktioniert auch ohne das $, oder?
Meine Regex beschreibt eine Zeile, die:
- Mit null oder mehr Leerzeichen anfängt.
- Und mit einem # oder dem Zeilenende weitergeht.
Damit werden auch Leerzeilen erwischt und Zeilen wo nur Leerzeichen stehen.
Tabs werden davon nicht abgedeckt, aber man kann eben “auf die Schnelle” nicht alles haben.
ahhh, danke. Jetzt habe ich es kapiert.