Hallo, Agon S. Buchholz wrote: > "</string1>" > > soll werden > > "<NEWLINE>[[{{string2|{{value}}}}]]<NEWLINE></string1>", my $s1 = quotemeta '</string1>'; my $replacement = "\n[[{{string2|{{value}}}}]]\n"; s/$s1/$replacement/g; wie du das in ein Perl-Script einbauen kannst hat Hans-Dietrich ja schon geschrieben. > Würde etwa folgendes funktionieren [2] [3], oder geht es unter Debian > auch irgendwie einfacher (sprich: übersichtlicher)? Irgendwie macht mich > diese Maskierung völlig wuschig ;-/ > > perl -i.bak -p -e > 's/\<\/string1\>/\n\[\[\{\{string2\|\{\{value\}\}\}\}\]\]\n\<\/string1\>/ig' > FILE.xml Der Replacement-Teil ist keine Regex sondern ein String, d.h. du musst nicht jeden Mist escapen. > Beim weiteren Googeln stieß ich auf [5], der die zu ersetzenden Strings > nicht mit "\", sondern mit "|" trennt ("perl -p -i[.ext] -e 's|x|y|[ig]' > filename") - was ist denn nun eigentlich richtig? du kannst alles mögliche als delimiter nehmen: s|foo|bar|g s#foo#bar#g s;foo;bar;g usw. P.S. wenn das dein Unicode zerschiessen sollte (unwahrscheinlich...), dann kannst du den String codieren: use Encode; while (my $line = <$in>){ $line = decode("utf8", $line); # hier Ersetzungen durchführen print $out decode("utf8", $line); } HTH, Moritz -- Moritz Lenz http://moritz.faui2k3.org/ - http://sudokugarden.de/ - http://perl-6.de/
Attachment:
signature.asc
Description: OpenPGP digital signature