Zunächst einmal danke für die Antworten,
@Beniamin
Dein Einzeiler lässt mir nur den Zeilenanfang zurück.
Ich brauche den Zeilenanfang bis zum Doppelpunkt und danach noch eine
Leerstelle.
[sed regexp]
> telephoneNumber: +39 0474-551 999
>
> telephoneNumber: und eine Leerstelle am Zeilenanfang sollen bleiben
> alle anderen Zeichen, die in der Telefonnummer enthalten sind,
> sollen verschwinden, egal was es ist (Leerstellen, Bindestriche,
> alles was keine Ziffer ist).
> Wie mache ich das mit sed?
Hmm, da gibt es meherere Loesungen. Ich nehme an, dein File ist ein
LDIF File, und deshalb einigermassen streng formatiert.
Ja, du vermutest richtig.
1) "In jeder Zeile, die mit telephoneNumber beginnt, loesche alles
nach dem ersten Doppelpunkt; behalte nur den Doppelpunkt selber":
sed -e '/^telephoneNumber:/s/:.*/:/'
2) "substituiere 'telephoneNumber:' und alles was danach kommt mit
'telephoneNumber'":
sed -e 's/telephoneNumber: .*/telephoneNumber:/'
3) Wie 2) aber mit einem Trick: (back-reference): in sed kannst du
sub-expressions in Klammern setzen \( und \) und alles was in der
Klammer enthalten ist, spaeter mit \1 referenzieren:
sed -e 's/\(telephoneNumber:\) .*/\1/'
Daran hatte ich bereits gedacht. Leider kommen die Leerstellen ganz
unterschiedlich und, wenn ich es richtig verstanden habe, werden gerade
diese als Unterbrechung interpretiert.
http://www.tty1.net/sed-tutorium_de.html
Kann es nur weiter empfehlen, da ist viel drinnen.
Ich probiere weiter. Angenommen ich komme zum Ziel melde ich es hier.
Gruß