Tips & Tricks zum Umgang mit CSV-Dateien #

Split mit Headern #

Hin und wieder möchte ich eine CSV-Datei in mehrere Teile aufteilen, (z.B. um sie in kleineren Paketen bearbeiten zu können). Dazu gibt es eine Programm:

Das brauchen wir aber nicht, weil wir ja LUGer und damit Shell-Magier sind. :-)

Dateien aufteilen kann man in der Shell grundsätzlich mit dem split-Kommando. Die Kunst ist nun, die Headerzeilen aus der ursprünglichen Datei in die gesplitteten wieder einzufügen.

Ich mache das so:

  ( tail -n+2 datei.csv | split -l 100 -d - gabe ); for file in gabe* ; do ( ( head -n 1 datei.csv ; cat $file ) > aus${file}.csv ); done; rm gabe* ; ls ausgabe*

Da dieser Einzeiler die nackten Unix-Tools benutzt, arbeitet er übrigens mit "Unix-Zeilen" und nicht mit "CSV-Zeilen", d.h. wenn eine CSV-Zeile Zeilenvorschübe enthält, gibts ggf. Ärger. Wer den vermeiden will, kann sich ja mal das Debian-Paket "csvtool" ansehen. Das kann man hier bestimmt zur Verbesserung einbauen.

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-2) was last changed on 29-Oct-2013 09:48 by ThomasBayen