Hallo nochmals, Sven Gehr schrieb:
Am Mi 31.08.2005 10:54 schrieb K. Elo <maillists@nic.fi>:
Hallo,
Mein Beitrag:
sed '{ s/^.*(@@.*@@).*//;s/[@@| ]//g;s/^+/00/;s/[^0-9]//g }'
ich habe in der zwischenzeit viel herum probiert und habe das ganze nochmal überarbeitet. Ich benutze jetzt die Zeichenfolge @# um den Anfang zu markieren und #@ für das Ende. Mit:
echo "bla bla @# +49 621 / 4829-399 #@ bla bla" |sed -e 's/^.*\@#//' -e 's/\#@.*$//' -e 's/ //g' -e 's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e 's/-//g'
funktioniert das in allen, von mir probierten, Variationen. Ob das effizient ist kann ich nicht sagen. Zumindest funktioniert es.
Ist ja prima, wenn's funktioniert. Dasselbe erreichst Du aber auch mit: sed '{ s/^.*\(@#.*#@\).*/\1/;s/[@#|#@| ]//g;s/^+/00/;s/[^0-9]//g }' Hier wird zuerst (s/^.*...) die ganze Zeile durch die Kette von '@#' bis (inkl.) '#@' ersetzt, dann (;s/[@...) alle '@#', '#@' und Leerzeichen entfernt, danach (;/s^+...) das erste '+' durch '00' ersetzt und schließlich (;s/[^0...) alle Nicht-Zahlen entfernt. M.E. wird Dein Befehl nicht richtig funktionieren, falls die Telefonnummer (?) nicht mit +49 (sondern z.B. mit +358 :) ) beginnt... Gruß Kimmo