staging.inyokaproject.org

Dateien aus Unterordnern in eine Datei zusammenfügen

Status: Ungelöst | Ubuntu-Version: Ubuntu 19.04 (Disco Dingo)
Antworten |

Xa.Fr

Anmeldungsdatum:
20. Februar 2013

Beiträge: 88

Hallo,

ich habe hier ein kleines Problem und komme mit meinen rudimentären Shell Kenntnissen nicht weiter.

Habe hier eine Dateistruktur aus lauter Unterordnern, in denen wieder Ordner 1 und 2 sind (heißen bei allen gleich) und in den Ordnern 2 ist eine .json Datei

Das Ganze sind jetzt hunderte Unterordner, wobei ich bei jedem die .json Datei aus Ordner 2 in eine einzige Datei zusammenfassen möchte. Immer jede Datei in eine extra Zeile. Am Ende wäre vielleicht noch gut, wenn ich auch einzelne Strings aus der erzeugten Datei auslesen könnte, das muss aber erst mal nicht sein.

Kann mir da vielleicht jemand helfen? Danke ☺

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

Doofe Frage: Sind die Input-Dateien so gestrickt, dass nach der Verkettung ein gültiges JSON-Dokument entsteht? Soll das sowas wie JSON streaming werden? Wenn ja: Sind deine Input-Dateien so gestrickt, dass sie sich in ein gültiges JSON-Streaming-Format verketten lassen?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Xa.Fr schrieb:

Das Ganze sind jetzt hunderte Unterordner, wobei ich bei jedem die .json Datei aus Ordner 2 in eine einzige Datei zusammenfassen möchte. Immer jede Datei in eine extra Zeile. Am Ende wäre vielleicht noch gut, wenn ich auch einzelne Strings aus der erzeugten Datei auslesen könnte, das muss aber erst mal nicht sein.

Ohne genau zu wissen, was Du möchtest (siehe die Fragen von Cranvil) fällt mir dazu spontan dieses ein - das erzeugt aus allen Eingaben ein gültiges JSON-Dokument:

1
find -type f -name \*.json -exec jq --slurp . {} +

Siehe jq und Manpage. Ggf. brauchst Du noch genauere Bedingungen, falls da noch mehr JSON-Dateien liegen, die Du nicht erwischen willst. Dazu müsstest Du mal konkreter werden, was die Namen der Dateien und Verzeichnisse angeht.

Xa.Fr

(Themenstarter)

Anmeldungsdatum:
20. Februar 2013

Beiträge: 88

Also konkret gehts mir darum, dass ich aus den Daten: https://figshare.com/articles/PHEME_dataset_of_rumours_and_non-rumours/4010619

eine csv Datei erstellen möchte um sie dann in Librecalc zu importieren.

Hätte hier auch was gefunden (https://github.com/swkasica/pheme-rnr-knowledge-discovery/blob/master/README.md), aber scheitere leider an:

ModuleNotFoundError: No module named 'util'

Bin gerade mit Manjaro unterwegs, da ich nur den Laptop zur Verfügung habe.

Da ich nicht alle Daten brauche, sondern nur die aus den "rumor" Unterordnern hatte ich die Hoffnung, man kann das alles einfach zusammenfügen...

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Xa.Fr schrieb:

Hätte hier auch was gefunden (https://github.com/swkasica/pheme-rnr-knowledge-discovery/blob/master/README.md), aber scheitere leider an:

Bitte korrekte Links posten! Siehe Forum/Syntax.

Bin gerade mit Manjaro unterwegs, da ich nur den Laptop zur Verfügung habe.

Also gar nicht Ubuntu?

Da ich nicht alle Daten brauche, sondern nur die aus den "rumor" Unterordnern hatte ich die Hoffnung, man kann das alles einfach zusammenfügen...

Ich weiß ja jetzt nicht, was Du aus den einzelnen JSON-Dokumenten extrahieren willst, aber das hier sollte Deiner ursprünglichen Anforderung schon recht nahe kommen:

1
find -type f -path '*/rumors/*.json' -exec jq -cM . {} +

Jetzt hast Du alle Dokumente jeweils in einer Zeile. Zum Extrahieren des Inhalts, den Du brauchst, musst Du den Filter "." durch etwas anderes ersetzen. Siehe die erwähnte Manpage. jq kann auch direkt CSV ausspucken. Du musst halt nur die Logik so gestalten, dass jedes Dokument in ein Array transformiert wird.

Antworten |