PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : per SED bei einem match die letzten drei Ziffern X'en?



qeldroma
06-10-2005, 12:06
Hallo,

ich habe mehrere HTML-Dateien, in welchen Telefonnummern sind, umschlossen von td's.
Bei diesen Telefonnummern (Bsp.: '<TD>+4914525315</TD>') soll ich nun die letzten drei Ziffern X'en.
Erschwerend kommt hinzu, das diese HTML-Dateien keine Zeilenwechsel haben, somit alles ein Einzeiler ist.

Folgendes habe ich bis jetzt:


cat /tmp/cdr2mysql/html/2005_9_251135.html |sed -e 's/TD>+[0-9]*</###/g'

Das trifft auf jeden Fall jede Nummer und ersetzt sie bis jetzt erstmal komplett durch "###".

Nun sollen aber nur die letzten drei Ziffern ge'X't werden?
Sollte vielleicht erwähnen, das ich zwar Programmierer bin, regexp also gut kenne, jedoch noch nie mit SED/AWK gearbeitet hatte, reicht also eine kurze und knappe Antwort ;)

Grüße, Qeldroma

peschmae
06-10-2005, 13:02
Also was soll aus '<TD>+4914525315</TD>' genau werden?

MfG Peschmä

qeldroma
06-10-2005, 13:21
Also was soll aus '<TD>+4914525315</TD>' genau werden?

MfG Peschmä


<TD>+4914525XXX</TD>

Zu bedenken ist, das inklusive der internationalen Nummern die Anzahl der Stellen nicht festlegbar ist... LEIDER :mad:

michael.sprick
06-10-2005, 13:35
das kannst Du zum Beipiel so lösen:


sed -e 's/<TD>\(+\?[0-9]*\)...<\/TD>/<TD>\1###<\/TD>/g'

qeldroma
06-10-2005, 13:41
Ahhh.... :cool:

Jetzt verstehe ich endlich wie das mit dem Substituieren/Expandieren geht, DANKE :D

michael.sprick
06-10-2005, 13:47
Ahhh.... :cool:

Jetzt verstehe ich endlich wie das mit dem Substituieren/Expandieren geht, DANKE :D

evtl. hilfreich:

perldoc perlre
perldoc perlretut
info sed

;)