Ich stecke nun schon seit mehreren Stunden damit fest und habe eine Fülle von verschiedenen Tools ausprobiert, um die Aufgabe zu erledigen. Ohne Erfolg. Es wäre fantastisch, wenn mir jemand bei diesem Problem helfen könnte.
Hier liegt das Problem:
Ich habe eine sehr große CSV-Datei (400 MB+), die nicht korrekt formatiert ist. Im Moment sieht sie etwa so aus:
This is a long abstract describing something. What follows is the tile for this sentence."
,Title1
This is another sentence that is running on one line. On the next line you can find the title.
,Title2
Wie Sie wahrscheinlich sehen können, müssten die Titel ",Titel1" und ",Titel2" eigentlich in der gleichen Zeile wie der vorstehende Satz stehen. Dann würde es etwa so aussehen:
This is a long abstract describing something. What follows is the tile for this sentence.",Title1
This is another sentence that is running on one line. On the next line you can find the title.,Title2
Bitte beachten Sie, dass das Ende des Satzes Anführungszeichen enthalten kann oder nicht. Am Ende sollten auch sie ersetzt werden.
Hier ist, was ich bis jetzt gefunden habe:
sed -n '1h;1!H;${;g;s/\."?.*,//g;p;}' out.csv > out1.csv
Dies sollte eigentlich die Aufgabe erfüllen, den Ausdruck über mehrere Zeilen hinweg abzugleichen. Leider tut es das nicht :)
Der Ausdruck sucht nach dem Punkt am Ende des Satzes und den optionalen Anführungszeichen plus einem Zeilenumbruchzeichen, das ich mit .* abzugleichen versuche.
Hilfe sehr erwünscht. Dabei spielt es keine Rolle, mit welchem Tool die Aufgabe erledigt wird (awk, perl, sed, tr, etc.).