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


--
Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/


Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Antwort per Email an