Christoph 'Mehdorn' Weber <
spam...@das-mehdorn.de> wrote:
> Hallo!
> * Andreas Leitgeb <
a...@logic.at>:
>> Ich habe in letzter Zeit aber immer öfter mit CSV Dateien zu tun,
>> in denen Felder das Trennzeichen auch literal als Teil eines Feldes
>> enthalten, und zu diesem Zwecke "gequotet" sind:
>> z.B.:
>> "das ""erste"" Feld;";"das ""zweite"" Feld; auch mit einem "";"""
>> Wie behandelt man unter unix/linux solche Dateien am sinnvollsten?
> Ich neige da zu Tools/Sprachen, die direkt mit CSV umgehen können.
ja, es mit loffice zu öffnen ist für manche Aktionen auch eine option...
>> - man schreibt (oder findet?) einen Präprozessor, der das quoted-CSV
>> mit den quotes korrekt parst, und ein simples CSV ohne quotes aber
>> mit einem "out-of-band" Trennzeichen erzeugt, wenn es eines gibt.
> Die ASCII-Zeichen 0x1c bis 0x1f sind als spezielle Trennzeichen
> gedacht und in normalen Texten eher selten anzutreffen und böten
> sich als Ersatz an. Besonders 0x1e (record seperator) springt ins
> Auge.
Ja, gute Vorschläge, falls mal der noch naheliegendere TAB nicht oob ist.
In der Vergangenheit (in prä-utf8 Zeiten) hat sich da auch schon der
hochgestellte dreier ³ bewährt, weil er im iso-8859-1 ist, auf der
Tastatur ist, sehr selten in der payload vorkommt, aber (im Gegensatz
zu ^I und ^[ - ^?) auch eine terminal-ausgabe "überlebt".
>> - oder vielleicht haben die standard tools schon optionen, um
>> mit quotes richtig umgehen zu können, die ich erst noch
>> nachlernen sollte...
> Mein apt schlägt jedenfalls vor, mal einen Blick auf die Pakete
> cvskit, csvtool und xml2 zu werfen, wenn du bei den genannten
> Tools zum Weiterverwursten bleiben willst.
csvtool habe ich jetzt installiert - 1000 Dank! Das wird mir wohl
in einigen Fällen recht hilfreich sein :-) Die Umwandlung in
ein simples csv mit selbstgewähltem SEP könnte ich mit
csvtool format '%1,%2,%3,...\n'
hinbekommen, zurück-umwandlung ist damit vermutlich schwieriger,
wenn manche Zellen-inhalte von sich aus mit einem Gänsefüßchen
beginnen.
Das csvformat aus dem csvkit scheint recht mächtig, bei meinen Tests
hat er mir aber die option -Q ignoriert... aha ... ubuntu 22.04 hat
da noch die version 1.0.6 davon... Werd da noch weiterforschen,
weil die optionen laut
https://csvkit.readthedocs.io/en/latest/scripts/csvformat.html
ziemlich genau dem entsprechen, was ich mir von so einem tool
erhofft hätte. Vielleicht schreib ich es aber auch einfach in
tcl selber neu ;-)
Das xml2 (csv2 ... | 2csv ...) scheint nicht wirklich mit quoted csv
umgehen zu können, auch mit option -q \" nicht. Die in der manpage
angegebene online-doc ist mittlerweile ge404t, aber auch das webarchiv
davon
https://web.archive.org/web/20160822100050/http://ofb.net/~egnor/xml2/ref
scheint zu csv nicht viel zu sagen...
Also Danke nochmal für den Hinweis auf csvtool und csvkit!
PS: meine Finger tippen auch oft cvs statt csv :-D
Hab auch immernoch oft mit cvs (dem VCS) zu tun.