SED suchen und ersetzen frage

Lord_Icon

Member
Moins,

ich müsste etliche vhost-inhalte wegen geänderten Pfade anpassen.

Mittels "sed" ist das ja auch kein Problem.
Was allerdings ein Problem ist, das die vhost beim Befehl "documentRoot" ein hochkommata erwartet. Selbst wenn ich das Maskiere, fliegt SED auf die Nase

Code:
sed -i 's/'DocumentRoot "/var/www/htdocs/web11/"/DocumentRoot "/var/www/htdocs/web11/html/"' /root/vhost/domain.conf

KAnn mir SED auch mitteilen, dass er was gefunden hat ?
Wenn ja, dann müsste ich ja den apachen noch reloaden.


Weiß hier einer Rat ?
 
Manche Shells (nicht sed) benötigen hier drei (oder so gar mehr) Escapezeichen:
Code:
sed -e 's@\\\'DocumentRoot "/var/www/htdocs/web11/"@DocumentRoot "/var/www/htdocs/web11/html/"@' -i /root/vhost/domain.conf

Oder man trickst etwas:
Code:
sed -e 's@\([']\)DocumentRoot "/var/www/htdocs/web11/"@/DocumentRoot "/var/www/htdocs/web11/html/"@' -i /root/vhost/domain.conf

Darüberhinaus hattest Du die Slashes nicht escaped und den Slash fürs Beenden der Ersetzung vergessen.
Wenn man Ausdrücke mit Slashes verarbeitet, sollte man als Begrenzer möglichst ein anderes eindeutiges Zeichen als den Slash verwenden, zum Beispiel das @-Zeichen wie in meinen Beispielen. Das erspart einem einige Stolpersteine beim Escapen.

Den CLI-Schalter -i sollte man gemäss der Syntax direkt vor dem zu bearbeitetem File.
 
Manche Shells (nicht sed) benötigen hier drei (oder so gar mehr) Escapezeichen:
:eek:

Na da hätt ich je ewig rumprobieren können. Einmal Escapen ist bekannt... aber mehrfach... da kommt ja keiner drauf :p


Oki. Habt Dank Ihr beiden.
Damit sollte das Problem gelöst sein
 
Back
Top