"xy,kj","bla" in spalten trennen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
lisan
Beiträge: 658
Registriert: 22.02.2003 19:05:04
Wohnort: Berlin
Kontaktdaten:

"xy,kj","bla" in spalten trennen

Beitrag von lisan » 04.08.2006 10:10:03

Hi,

ich muss adressbuecher bearbeiten, leider kommt der delimiter "," auch im Text selbst vor, so dass awk probleme macht.
Hat jemand eine Idee wie ich mit sed oder awk spalten tauschen kann wenn der delimiter auch im text vorkommt ?

Gruss

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 04.08.2006 12:56:39

wenn du die Anführungszeichen berücksichtigst, dann kannst du zwischen "," als Delimiter und "," im Text unterscheiden

z.B. so:

Code: Alles auswählen

gms@gms4:~$ cat x.txt
"xy,kj","bla"
gms@gms4:~$ cat x.txt | perl -ne 'chomp;s/(^\"|\"$)//g;@v=split(/\",\"/);print $v[1],"\t",$v[0],"\n";'
bla     xy,kj
Gruß
gms

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 04.08.2006 20:31:04

...ich will nicht behaupten, dass es elegant ist, aber für dieses Beispiele geht es :wink:

Code: Alles auswählen

fuzzy@free:~$ cat x.txt | awk -F '","' '{print$2"\t"$1}' | sed 's/"//g'
bla     xy,kj

Code: Alles auswählen

fuzzy@free:~$ cat x.txt | sed 's/"\([^"]*\)","\([^"]*\)"/\2\t\1/'
bla     xy,kj
...ansonsten müsstest Du noch etwas mehr Beispiele geben.

Gruß fuzzy

Antworten