Analysieren von XML-, JSON- und neueren Datendateiformaten unter UNIX mithilfe von Befehlszeilenprogrammen


9

Die Unix-Umgebung verfügt über einige hervorragende Tools zum Parsen von Text in verschiedenen Formen. In letzter Zeit liegen die Daten jedoch nicht mehr in den traditionellen (historischen) Formaten (CSV, TSV, auf Datensätzen oder anderen Trennzeichen basierend) vor. Daten werden heutzutage in strukturierten Formaten wie XML / JSON ausgetauscht.

Ich weiß, dass es einige gute Tools wie sed, awk und Perl gibt, die fast jede Form von Daten da draußen kauen können. Um jedoch mit dieser Art von strukturierten Daten zu arbeiten, muss man oft ein komplettes Programm schreiben, und angesichts der geringen Zeit, die zum Extrahieren von Informationen zur Verfügung steht, muss man sich hinsetzen und die gesamte Logik dessen herausfinden, was man abfragen und setzen möchte es programmatisch nach unten. Manchmal ist dies nicht in Ordnung - im Grunde genommen, weil die aus diesen Dateien extrahierten Informationen als Eingaben für die weitere Arbeit dienen. auch wegen der Zeit, die benötigt wird, um nach der geeigneten Lösung zu suchen und sie zu codieren. Es wird ein Befehlszeilentool mit ausreichenden Schaltern zum Suchen, Abfragen und Speichern von Daten benötigt.

Ich suche nach Tools, die XML / JSON oder andere Formen strukturierter Daten in andere Formate wie CSV usw. kopieren, damit man von dort aus andere Befehle verwenden kann, um Informationen daraus zu erhalten.

Gibt es Kommandozeilen-Dienstprogramme, von denen Sie wissen, dass sie diese Art von Arbeit erledigen? Gibt es dafür bereits awk / Perl-Skripte?

Antworten:


5

Für XML gibt es http://xmlstar.sourceforge.net/

XMLStarlet ist eine Reihe von Befehlszeilenprogrammen (Tools), mit denen XML-Dokumente und -Dateien mithilfe einfacher Shell-Befehle transformiert, abgefragt, validiert und bearbeitet werden können, ähnlich wie dies für Nur-Text-Dateien mit UNIX grep, sed, Befehle für awk, diff, patch, join usw.

Sie können auch xsltprocähnliche Tools verwenden ( saxon).

für json: ich denke auch, dass es besser ist, einfach python, rubin, perl zu verwenden und es zu transformieren.


jqist ein gutes Werkzeug zum Parsen von JSON in der Shell: stedolan.github.io/jq
Kusalananda

4

Ich denke, Perl-, Python- oder Ruby-Module können dafür erfolgreich eingesetzt werden. Und jedes davon kann für die Skripterstellung verwendet werden.


Mein ganzer Punkt war, das Schreiben eines Skripts zu vermeiden und stattdessen zu versuchen, es mit einem Befehl zu tun. Das Schreiben des Skripts wird den gesamten Zweck dieser Frage zunichte machen.
Kamaal

Denken Sie darüber nach ruby -e 'program text', ein Skript zu schreiben?
Alex

Ich glaube, ich habe dich nicht richtig verstanden. Woher bekomme ich den 'Programmtext'?
Kamaal

@ Kamaal: Keine Ahnung. Google? Dokumente für die Skriptsprache Ihrer Wahl? CPAN fällt Ihnen ein, wenn Sie Perl verwenden.
Alex

@kamaal: Je komplexer das Datenformat wird, desto länger werden die Beschreibungen der auszuführenden Vorgänge. Zum Beispiel perl -0777 -MJSON -e '$t=from_json(<STDIN>); do_something_with($t)'können Sie JSON mit einem Minimum an Aufwand zu verarbeiten. Sie müssen dem Computer immer noch sagen, was er mit den Daten tun soll.
Gilles 'SO - hör auf böse zu sein'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.