1
2
3
4
5
6
#!/usr/bin/ perl
use strict; use warnings;
my $oldpos = "position 20 0 100";
my $pos = "0 -14 120";
my $ending = "cutout.wrl";
-p -e s/$oldpos/$pos/g $ending
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Kommando zum Ersetzen ($ Am Anfang ist der Systemprompt)
$ perl -i.bak -p -e 'BEGIN { $/=undef; $search = "abc\nabc\nabc"; $replace = "123\n123\n123"; } s/$search/$replace/msg;' data.txt
# Kontrolle ob Ersetzung geklappt hat
$ cat data.txt
123
123
123
def
# Kontrolle der alten Daten
$ cat data.txt.bak
abc
abc
abc
def
1
2
$ perl
-i.bak -p -e 'BEGIN { $/=undef; $search = "position 20 0 100\norientation 0.0 -0.8 0 -0.2\nfieldOfView 0.75\n"; $replace = "position 0 -14 120\norientation 0 -0.3 10 0\nfieldOfView 0.23\n"; } s/$search/$replace/msg;' a1_cutout.wrl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#! /usr/bin/perl -pi.bak # quick and dirty script # please consult perldoc perlrun for information about the used switches -p -i # or online at: http://perldoc.perl.org/perlrun.html use strict; use warnings; use vars qw( $search $replace ); # set some values at the start of program BEGIN { $search = "abc\nabc\nabc"; $replace = "123\n123\n123"; # make us read a complete file at once $/ = undef; } # the following code is run every time a new line or dataset is read # beware of the -p switch on shebang. # each modified datafile is backed up before; see -i.bak on shebang s/$search/$replace/msg;
perl skript.pl *cutout.wrl
2012-08-01T15:40:10 ErinCode: (dl )1
2$ perl
-i.bak -p -e 'BEGIN { $/=undef; $search = "position 20 0 100\norientation 0.0 -0.8 0 -0.2\nfieldOfView 0.75\n"; $replace = "position 0 -14 120\norientation 0 -0.3 10 0\nfieldOfView 0.23\n"; } s/$search/$replace/msg;' a1_cutout.wrl
In der Shell direkt erhalte ich die Meldung:
Der Befehl "$" ist entweder falsch geschrieben..usw.
2012-08-01T18:33:11 GUIfreundErsetze alle "....." durch qq(.....). Falls Klammern im String vorkommen, müsstest du bei qq statt der Klammern andere Trennzeichen nehmen, die nicht im String vorkommen. Ersetze schließlich '.....' durch ".....". Der Einzeiler hat dann gute Chancen, auch unter Linux lauffähig zu sein.