[gelöst] CSV-Umwandlungsprobleme

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
uname
Beiträge: 12405
Registriert: 03.06.2008 09:33:02

[gelöst] CSV-Umwandlungsprobleme

Beitrag von uname » 11.09.2013 08:59:16

Ich bräucht einen Einzeiler in sed oder awk:

Code: Alles auswählen

Wert1;Wert2;Wert3;"Wert mit ; was doof ist";Wert4;Wert5
In meinen CSV-Zeilen kommen manchmal Semikolon oder Anführungszeichen als Werte vor. Diese werden durch Anführungszeichen in der Spalte dargestellt. Mir würde es reichen, dass sämtliche Anführungszeichen und Semikolon (jedoch nur innerhalb der Anführungszeichen) entfernt werden, z.B.:

Code: Alles auswählen

Wert1;Wert2;Wert3;Wert mit  was doof ist;Wert4;Wert5
Zuletzt geändert von uname am 11.09.2013 13:23:10, insgesamt 1-mal geändert.

uname
Beiträge: 12405
Registriert: 03.06.2008 09:33:02

Re: CSV-Umwandlungsprobleme

Beitrag von uname » 11.09.2013 10:56:12

Im Prinzip habe ich eine Teillösung gefunden, da die Zeichenkette nur einmal pro Zeile auftritt:

Code: Alles auswählen

awk -F";\"|\";" '{print $2}' test.txt
$2 wäre der Teilstring ohne Anführungszeichen. Mir würde nun reichen statt $2 den String ohne Semikolon auszugeben. Wie kann ich auf eine awk-Variable wie $2 eine Substitution anwenden? Gerne direkt per "print".

newdeb
Beiträge: 134
Registriert: 03.02.2011 11:11:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Frankfurt

Re: CSV-Umwandlungsprobleme

Beitrag von newdeb » 11.09.2013 13:15:43

Code: Alles auswählen

> awk -F";\"|\";" '{print $1 ";" gensub(/[;]/,"","g",$2) ";" $3}' test.txt
Wert1;Wert2;Wert3;Wert mit  was doof ist;Wert4;Wert5                                                                                                                       

uname
Beiträge: 12405
Registriert: 03.06.2008 09:33:02

Re: CSV-Umwandlungsprobleme

Beitrag von uname » 11.09.2013 13:22:59

Danke. "gensub" hatte ich mir schon angeschaut aber nie ein Beispiel mit Parametern gefunden.

Antworten