Thread Hilfestellung - Suchen und Ersetzen im Speziellen bei großen Dateien
(16 answers)
Opened by jan99 at 2015-11-06 18:21
Wie schon angedeutet, kannst Du das mit einem s///e machen, bei dem der Ersetzungsteil vor der Ersetzung nochmal evaluiert wird.
So kannst Du die eingefangenen Elemente z.B. durch eine Funktion bearbeiten lassen. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 my $string = "rue' version='4' changeset='6456424' lat='36.7256674' lon='-4.4539391' />"; sub modify_lat_lon { my $lat = shift; # lat='1.11' my $lon = shift; # lon='2.22' my $fill = shift; # whatever is between the stuff above $lat =~ s/-?[\d.,]+/new_lat/; $lon =~ s/-?[\d.,]+/new_lon/; # recombine the parts to one string return $lat . $fill . $lon; } # one way (lat .. lon) or the other (lon .. lat) $string =~ s/(lat='[^']+')(.*)(lon='[^']+')/modify_lat_lon($1,$3,$2)/e || $string =~ s/(lon='[^']+')(.*)(lat='[^']+')/modify_lat_lon($3,$1,$2)/e; print $string, $/; Ergebnis: Code: (dl
)
rue' version='4' changeset='6456424' lat='new_lat' lon='new_lon' /> meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |