2017-11-19 5 views
3

Ich versuche, die Zeile sql auskommentieren (entfernen #).Wie # vor einer Zeile mit sed entfernen?

session { 
     radutmp 

     # 
     # See "Simultaneous Use Checking Queries" in sql.conf 
#  sql 
} 

Dies ist, was ich versucht habe:

sed -i 's/#  sql/  sql/' /etc/freeradius/sites-available/inner-tunnel 

Aber irgendwie die Räume sind nicht korrekt berechnet. Es findet nicht # sql.

+0

Sind Sie sicher, dass es Leerzeichen und kein Tab ist? – melpomene

Antwort

0

Nach melpomene sieht es so aus, als würde die Eingabedatei Registerkarten anstelle von Leerzeichen verwenden. Sie können die [:blank:] Zeichenklasse verwenden, die beide Tabs und Leerzeichen enthalten:

sed '/#[[:blank:]]*sql/s/#//' file 

Der Befehl Streichholz Linien mit der Sequenz #, null oder mehr Leerzeichen, gefolgt von dem Begriff sql und entfernt die ersten #

+1

'[[: blank:]]' ist genug, um Platz oder Tabs zu finden. '[[: space:]]' passt Leerzeichen, Tabulatoren, Zeilenumbrüche, Zeilenumbrüche, Seitenvorschübe und vertikale Tabulatoren an. – SLePort

+0

Ich habe es in '[: blank:]' geändert – hek2mgl

0

sed verwenden -E Option:

> sed -E 's/#(\s+sql)/\1/i' /etc/freeradius/sites-available/inner-tunnel 
        ^holds matching chunk from within first capturing group 

\s bedeutet eine Zeichenklasse, die [\t\n\r\f\v ] Zeichen bezeichnet. \s+ stellt sicher, dass es eine Art von Leerzeichen folgen sollte #

Verwandte Themen