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)

