Hi,
irgendwie steh ich auf dem Schlauch, dabei scheint das Problem nicht so
selten: Ich habe eine CSV-Datei und weil manche Leute es fertigbringen
in Excel Newlines in die Tabellenfelder zu machen, habe ich da solche
netten Strings:
...;voriges Feld;"Feld mit Linefeed
geht hier weiter";nächstes Feld;...
habe gedacht, sed könnte das richten:
sed -e 's/\(;"[^";]+\)$/\1/g'
Am 08.11.21 um 15:25 schrieb Jörg Thümmler:
Hi,
irgendwie steh ich auf dem Schlauch, dabei scheint das Problem nicht so selten: Ich habe eine CSV-Datei und weil manche Leute es fertigbringen in Excel Newlines in die Tabellenfelder zu machen, habe ich da solche netten Strings:
...;voriges Feld;"Feld mit Linefeed geht hier weiter";nächstes Feld;...
habe gedacht, sed könnte das richten:
sed -e 's/\(;"[^";]+\)$/\1/g'
file.corr passt aber nicht, lässt die Datei unverändert. Sieht jemand, was ich nicht sehe?
Thx für jeden Hinweis
Hallo Jörg,
newlines mit sed rauszukriegen scheint irgendwie schwierig. Probiere
doch mal tr:
tr -d '\n'
Am 08.11.21 um 16:09 schrieb funedv@gmx.de:
Am 08.11.21 um 15:25 schrieb Jörg Thümmler:
Hi,
irgendwie steh ich auf dem Schlauch, dabei scheint das Problem nicht so selten: Ich habe eine CSV-Datei und weil manche Leute es fertigbringen in Excel Newlines in die Tabellenfelder zu machen, habe ich da solche netten Strings:
...;voriges Feld;"Feld mit Linefeed geht hier weiter";nächstes Feld;...
habe gedacht, sed könnte das richten:
sed -e 's/\(;"[^";]+\)$/\1/g'
file.corr passt aber nicht, lässt die Datei unverändert. Sieht jemand, was ich nicht sehe?
Thx für jeden Hinweis
Hallo Jörg,
newlines mit sed rauszukriegen scheint irgendwie schwierig. Probiere doch mal tr: tr -d '\n'
file.corr " gleichzeitig mit entfernen geht dann so: tr -d '\n'
test.corr Gruß Klaus
Hi & Danke, nee, das ist nicht, was ich suche. Newlines mit sed sind nicht das Problem, mit "$" geht das schon ganz gut. Problem ist, dass nur die Newlines raus sollen, die innerhalb einer Zeichenkette liegen, die von "" umgeben ist, alle anderen sollen bleiben. Solche Zeichenketten entstehen, wenn jemand einen Zeilenvorschub in eine Tabellenkalkulationszelle kopiert und man das in CSV exportiert. -- cu jth
Hallo, Am Mon, 08 Nov 2021, Jörg Thümmler schrieb:
irgendwie steh ich auf dem Schlauch, dabei scheint das Problem nicht so selten: Ich habe eine CSV-Datei und weil manche Leute es fertigbringen in Excel Newlines in die Tabellenfelder zu machen, habe ich da solche netten Strings:
...;voriges Feld;"Feld mit Linefeed geht hier weiter";nächstes Feld;...
habe gedacht, sed könnte das richten:
sed -e 's/\(;"[^";]+\)$/\1/g'
file.corr ^^ Das ist so keine BRE
Versuch's mal mit:
$ sed -e 's/\(;"[^";]\+\)$/\1/g'
Am Montag, 8. November 2021, 15:25:59 CET schrieb Jörg Thümmler:
[...] CSV-Datei [...] habe ich da solche netten Strings:
...;voriges Feld;"Feld mit Linefeed geht hier weiter";nächstes Feld;...
habe gedacht, sed könnte das richten:
sed -e 's/\(;"[^";]+\)$/\1/g'
file.corr passt aber nicht, lässt die Datei unverändert. Sieht jemand, was ich nicht sehe?
Zwei Probleme:
1. Das Pluszeichen muss escaped werden.
2. Wenn schon das erste Feld über 2 Zeilen geht, klappt die RegEx nicht
3. sed arbeitet jeweils nur eine Zeile nach der anderen ab.
Eine Möglichkeit ist, alle Zeilen der Datei auf einmal einzulesen und dann zu
bearbeiten. Hier eine Lösung:
sed ':a;N;$!ba;s/\([\n;]"[^";]\+\)\n/\1/g'
Am 08.11.21 um 17:32 schrieb Hatto von Hatzfeld:
Am Montag, 8. November 2021, 15:25:59 CET schrieb Jörg Thümmler:
[...] CSV-Datei [...] habe ich da solche netten Strings:
...;voriges Feld;"Feld mit Linefeed geht hier weiter";nächstes Feld;...
habe gedacht, sed könnte das richten:
sed -e 's/\(;"[^";]+\)$/\1/g'
file.corr passt aber nicht, lässt die Datei unverändert. Sieht jemand, was ich nicht sehe?
Zwei Probleme: 1. Das Pluszeichen muss escaped werden. 2. Wenn schon das erste Feld über 2 Zeilen geht, klappt die RegEx nicht 3. sed arbeitet jeweils nur eine Zeile nach der anderen ab.
Eine Möglichkeit ist, alle Zeilen der Datei auf einmal einzulesen und dann zu bearbeiten. Hier eine Lösung:
sed ':a;N;$!ba;s/\([\n;]"[^";]\+\)\n/\1/g'
file.corr Für Erläuterungen zu :a;N;$!ba siehe https://stackoverflow.com/questions/ 1251999/how-can-i-replace-a-newline-n-using-sed
Danke für die Frage; sie hat auch mich weitergebracht! Hatto
Hi, Danke an Hatto und David, 1. Davids Vorschlag tut nix, wahrscheinlich wg. dem über die Zeile gehen. 2. Hattos Vorschlag löscht viele, aber nicht alle Treffer 3. Hab ich jetzt von Euch aber brauchbare Tipps, um weiterzukommen, ich hoffe, ich kann dann ein Ergebnis posten ;-) Danke -- cu jth
Am 09.11.21 um 08:41 schrieb Jörg Thümmler:
Am 08.11.21 um 17:32 schrieb Hatto von Hatzfeld:
Am Montag, 8. November 2021, 15:25:59 CET schrieb Jörg Thümmler:
[...] CSV-Datei [...] habe ich da solche netten Strings:
...;voriges Feld;"Feld mit Linefeed geht hier weiter";nächstes Feld;...
habe gedacht, sed könnte das richten:
sed -e 's/\(;"[^";]+\)$/\1/g'
file.corr passt aber nicht, lässt die Datei unverändert. Sieht jemand, was ich nicht sehe?
Zwei Probleme: 1. Das Pluszeichen muss escaped werden. 2. Wenn schon das erste Feld über 2 Zeilen geht, klappt die RegEx nicht 3. sed arbeitet jeweils nur eine Zeile nach der anderen ab.
Eine Möglichkeit ist, alle Zeilen der Datei auf einmal einzulesen und dann zu bearbeiten. Hier eine Lösung:
sed ':a;N;$!ba;s/\([\n;]"[^";]\+\)\n/\1/g'
file.corr Für Erläuterungen zu :a;N;$!ba siehe https://stackoverflow.com/questions/ 1251999/how-can-i-replace-a-newline-n-using-sed
Danke für die Frage; sie hat auch mich weitergebracht! Hatto
Hi,
Danke an Hatto und David,
1. Davids Vorschlag tut nix, wahrscheinlich wg. dem über die Zeile gehen. 2. Hattos Vorschlag löscht viele, aber nicht alle Treffer 3. Hab ich jetzt von Euch aber brauchbare Tipps, um weiterzukommen, ich hoffe, ich kann dann ein Ergebnis posten ;-)
Danke
Hi,
ich nochmal,
sed ':a;N;$!ba;s/\([\n;]"[^";]\+\)\n/\1/g'
participants (4)
-
David Haller
-
funedv@gmx.de
-
Hatto von Hatzfeld
-
Jörg Thümmler