bloodstix
Goto Top

RegExp Herausforderung

Hallo zusammen,

ich habe ein kosmetisches Problem in einer CSV-Datei (Export des TK-Anlagen-Telefonbuchs).
Dort steht in der 1. Spalte der Kontaktname. Leider ist es wie auch immer, unserem TK-Anlagen-Support beim Import
gelungen das die Anreden (Herr/Frau) zumeist in der Mitte der Zelle stehen. Beispiel:
Mustermann Simon Herr Firma;nummer;beschreibung;Anzeigen
Ich zerbreche mir gerade den Kopf darüber wie ich mit awk/sed o.ä. es hinbekommen kann die jeweilige Anrede aus der Mitte zu entfernen und an den Anfang zu verschieben.
Irgendwie will mir da nicht so recht was einfallen.
Hat da vielleicht jemand eine Idee? Vermutlich denke ich gerade einfach zu kompliziert.

Grüße
bloody

Content-ID: 551271

Url: https://administrator.de/forum/regexp-herausforderung-551271.html

Ausgedruckt am: 23.12.2024 um 02:12 Uhr

143127
Lösung 143127 24.02.2020 aktualisiert um 12:42:53 Uhr
Goto Top
https://regex101.com/r/0zpoZo/1

Leider ist es wie auch immer, unserem TK-Anlagen-Support beim Import gelungen das die Anreden (Herr/Frau) zumeist in der Mitte der Zelle stehen
Vermutlich denke ich gerade einfach zu kompliziert.
Wiederholen und dann richtig machen face-smile.
bloodstix
bloodstix 24.02.2020 um 12:49:11 Uhr
Goto Top
Hi @143127,

sieht schonmal gut aus, danke. Leider bekomm ich das Konstrukt nicht in sed gefüttert, hast du da auch noch ein Tipp? Wie würdest du das jetzt auf eine CSV-Datei anwenden?
mit
sed -e "s/([^;]*)(Herr|Frau)\s*(.*)/gm"  
gehts nicht. Da kommt dann
sed: -e Ausdruck #1, Zeichen 30: Nicht beendeter `s'-Befehl 

Grüße
bloody
143127
Lösung 143127 24.02.2020 aktualisiert um 13:06:16 Uhr
Goto Top
sed -e "s/([^;]*)(Herr|Frau)\s*(.*)/gm"
Da fehlt ja auch die Hälfte face-smile
 sed -re 's/([^;]*)(Herr|Frau)\s*(.*)/\2 \1\3/i' test.csv >testneu.csv  
bloodstix
bloodstix 24.02.2020 um 13:06:03 Uhr
Goto Top
Jau damit klappts.
Asche auf mein Haupt. Ich dachte bei deinem Link oben bei "Regular Expression" wäre die vollständige :o
Vielen Dank