[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Suchen und ersetzen...



Hallo,

On 2004.06.11 17:25, Manfred Gnädig wrote:
Hallo,
ich merke schon, das ist alles gar nicht so trivial.

>  find /var/www/web1/html -type f  -name *html -o -name *\.php
-print0 |
>  xargs -0 perl -ipe 's/Hund/Katze/g'

Ok. das ersetzt Hund mit Katze.

Wie kann ich aber "/home/www/web1" mit "/var/www/web15" ersetzen?

Ich vermute mal so wird es wohl nicht gehen (;-(

perl -ipe 's/home/www/web1/ var/www/web15/g'

ODER doch?

Nein, da muessen erst die Slashs entschaerft werden; im Normalfall passiert das mit '\', also
	perl -ipe 's/\/home\/www\/web1/\/var\/www\/web15/g'

Damit haette man dann aber einen klassischen Fall von LTS (Leaning Toothpick Syndrome) -- der Ausdruck wird nicht nur haesslich entstellt, sondern wirkt auch aeusserst verwirrend. Gluecklicherweise bietet PERL die Moeglichkeit, auch andere Trennzeichen (non-alphanumeric, non- whitespace) zu verwenden. Ausfuehrlich erklaert ist das alles in "man perlop", Absatz "Regexp Quote-Like Operators".
Du koenntest also den Ausdruck gut so schreiben:
	perl -ipe 's#/home/www/web1#/var/www/web15#g'

Allerdings ist das Ergebnis unter Umstaenden immer noch etwas anders als erwartet. Wenn es naemlich beispielsweise ein Verzeichnis
	"/home/www/web13"
gaebe, wuerde daraus
	"/home/www/web153"
gemacht. Das Einfuegen der Zeilenendemarke "$" wuerde das verhindern:
	perl -ipe 's#/home/www/web1$#/var/www/web15#g'

Schoenen Gruss,

Andreas



Reply to: