LibreOffice: mehrere CSV vereinen

N

Nob B. Lein

Mitglied
Thread Starter
Dabei seit
24.04.2018
Beiträge
87
Reaktionspunkte
23
Hallo auch,

wüsste jemand, wie ich aus mehreren CSV-Dateien eine einzige erstellen kann?

Ich nutze LibreOffice 5.4.6.2.

Es handelt sich um insgesamt acht Ordnern mit knapp 1700 einzelnen CSV.
Aus den Dateien pro Ordner soll jetzt eine einzige pro Ordner werden.

Ich sitze da schon länger dran, hab aber absolut keine Ahnung wie das von statten gehen soll, Google habe ich auch schonbemüht, finde dort aber nichts.

Danke schön!
 
Handarbeit....

Oder, was ich aber für schwierig bis unmöglich halte, eine Automation per Apple Automator.
 
Zuletzt bearbeitet:
aus mehreren CSV-Dateien eine einzige erstellen
»In éine Datei« soll heißen:
– als enzelne Blätter?
– alle auf éin Blatt?

Haben die denn alle Dateien die gleiche Struktur?
Ohne gäb’s kein Muster, nachdem ein zumindest einfaches Skript die Quellen parsen könnte.
 
  • Gefällt mir
Reaktionen: wegus
Sicher, die Dateien haben alle das selbe Muster, sie bestehen aus vier Spalten im Kopf und je Spalte exakt 100 Zeilen.

In einem Ordner z.B. sind 131 einzelne Dateien, und daraus soll eine einzelne Datei gemacht werden.
 
Sicher, die Dateien haben alle das selbe Muster, sie bestehen aus vier Spalten im Kopf und je Spalte exakt 100 Zeilen.

Dann könnte man unter Umständen was mit Automator machen.
Hinzu müsste man noch ein wenig scripten.

Zumindest im Ansatz:
Öffne Datei a
Kopiere einen bestimmten Bereich
Füge das in Datei b, Arbeitsblatt x ein.
Öffne Datei b
usw.

Kann man mit Automator aufzeichnen, aber ich denke das wird ohne weitere Programmierung nicht reichen.
 
Sicher, die Dateien haben alle das selbe Muster, sie bestehen aus vier Spalten im Kopf und je Spalte exakt 100 Zeilen.
In einem Ordner z.B. sind 131 einzelne Dateien, und daraus soll eine einzelne Datei gemacht werden.
pro ordner ausführen:
Code:
header=$(head -1 $(ls -1 *.csv | head -1))
cat *.csv | grep -v "${header}" >csu.csv
sed -ie '1i\'$'\n'"${header}"$'\n' csu.csv
evtl. kann man noch sort -u in die zweite zeile pipen, um doppelte zu löschen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ruerueka
Mit dem Automator schaff ich mangels Verständnis, wie der funktioniert, leider gar nichts.

Das Script @Olivetti: ich vermute, dass ich dort noch zumindest den Namen der ersten CSV hintippen muss (und den folgenden??) oder wie kann/muss ich den Code eingeben?
Weiterhin: im Terminal?

Als "normaler" User hab ich da leider ein Verständnisproblem ;-)
 
ja, nur im terminal.
du gehst in ein verzeichnis mit deinen CSVs, kopierst die drei eine zeile * ins terminalfenster + return und schaust, was in der csu.csv rauskommt und ob's passt. eingeben muss man nichts weiter, solange die dateien auf .csv enden.

* besser als einzeiler (und korrigiert, wegen BSD-sed):
Code:
header=$(head -1 $(ls -1 *.csv | head -1)) && cat *.csv | grep -v "${header}" >csu.csv && sed -i '' -e '1i\'$'\n'"${header}"$'\n' csu.csv


Fehlt da nicht ein Leerzeichen?
nein, kann man machen, wie man will. ich mach's immer ohne.
 
Zuletzt bearbeitet:
Unbedingt vorher eine Ordner-Kopie anlegen und nur mit der arbeiten.
 
ja. eine csu.csv würde hier überschrieben werden, falls vorhanden.
 
Zurück
Oben Unten