Thread Hilfestellung - Suchen und Ersetzen im Speziellen bei großen Dateien (16 answers)
Opened by jan99 at 2015-11-06 18:21

Linuxer
 2015-11-07 20:05
#182814 #182814
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
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!

View full thread Hilfestellung - Suchen und Ersetzen im Speziellen bei großen Dateien