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: