Forum: PC-Programmierung CSV Dateien zusammensetzen


von concat (Gast)


Lesenswert?

Hallo,

ich habe mehrere CSV Dateien mit Dateinamen "1.csv 2.csv ... 200.csv".
Inhalt ist jeweils 1x Headerzeile (in allen dateien identisch) + rest 
"Daten".

Zwei Fragen:
1. Ich möchte die Dateien mit einem (Linux) bash/shell Befehl in eine 
einzige Datei zusmmenkopieren sodass das Ergebnis nurnoch 1x header + 
den inhalt aus allen Dateien hat.
2. Da die Dateinamen "menschlich" 1 ... 200 sortiert sind, kommt z.b. 10 
vor 2, wie kann ich das richtig sortiert an den Befehl aus 1 übergeben? 
(daten sollten die richtige reihenfolge haben wie die dateinamen)

Danke!
Concat

von Siri-Server für Linux (Gast)


Lesenswert?

cat $(ls | sort -g)

von Yalu X. (yalu) (Moderator)


Lesenswert?

1
{ head -n1 1.csv; for f in $(ls [1-9]*.csv | sort -n); do tail -n+2 "$f"; done; } >all.csv

Oder etwas kürzer:
1
{ head -n1 1.csv; tail -qn+2 $(ls [1-9]*.csv | sort -n); } >all.csv

: Bearbeitet durch Moderator
von Bitflüsterer (Gast)


Lesenswert?

@ concat

Mit nur einem Befehl, wie gewünscht, wird es nicht gehen. Aber Yalus 
Lösung ist doch toll. Magst Du von der Forderung nicht vielleicht 
abgehen?

von concat (Gast)


Lesenswert?

Super!

Danke Yalu :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.