Analisi di XML, JSON e formati di file di dati più recenti in UNIX utilizzando le utilità della riga di comando


9

L'ambiente Unix ha alcuni strumenti eccellenti per l'analisi del testo in varie forme. Tuttavia, di recente, i dati non sono nei formati (storici) tradizionali (CSV, TSV, basati su record o altri delimitatori) rispetto a prima. I dati in questi giorni vengono scambiati in formati strutturati come XML / JSON.

So che ci sono alcuni buoni strumenti come sed, awk e Perl che possono masticare quasi ogni forma di dati là fuori. Tuttavia, per lavorare con questo tipo di dati strutturati, spesso si deve scrivere un programma completo e, dato il poco tempo disponibile per estrarre informazioni, è necessario sedersi e capire l'intera logica di ciò che si desidera interrogare e mettere giù programmaticamente. A volte questo non è OK, fondamentalmente perché le informazioni estratte da quei file agiscono come input per ulteriori lavori; anche a causa del tempo necessario per cercare la soluzione appropriata e codificarla. È necessario uno strumento da riga di comando con opzioni sufficienti per trovare, interrogare e scaricare i dati.

Sto cercando strumenti che prendono un XML / JSON o altre forme di dati strutturati e lo scaricano in altri formati come CSV, ecc., In modo che da lì si possano usare altri comandi per ricavarne qualsiasi informazione.

Esistono utility da riga di comando che conosci che svolgono questo tipo di lavoro? Sono già disponibili script awk / Perl?

Risposte:


5

per xml c'è http://xmlstar.sourceforge.net/

XMLStarlet è un insieme di utilità (strumenti) da riga di comando che possono essere utilizzate per trasformare, interrogare, convalidare e modificare documenti e file XML utilizzando un semplice insieme di comandi shell in modo simile a quanto avviene per i file di testo in chiaro utilizzando UNIX grep, sed, comandi awk, diff, patch, join, ecc.

puoi anche usare xsltprocstrumenti simili ( saxon).

per json: penso anche che sia meglio usare solo pitone, rubino, perl e trasformarlo.


jqè un buon strumento per analizzare JSON nella shell: stedolan.github.io/jq
Kusalananda

4

Suppongo che i moduli Perl, Python o Ruby possano essere usati con successo per questo. E uno qualsiasi di questi può essere utilizzato per lo scripting.


Tutto il mio punto era di evitare di scrivere uno script e provare invece a farlo usando un comando. Scrivere la sceneggiatura vanificherà l'intero scopo di questa domanda.
kamaal,

Consideri ruby -e 'program text'"la scrittura di una sceneggiatura"?
alex

Penso di non averti capito bene. Dove posso trovare il "testo del programma"?
kamaal

@kamaal: non lo so. Google? Documenti per il tuo linguaggio di scripting preferito? CPAN mi viene in mente se stai usando Perl.
alex

@kamaal: Man mano che il formato dei dati diventa più sofisticato, le descrizioni delle operazioni da eseguire diventano più lunghe. Ad esempio, perl -0777 -MJSON -e '$t=from_json(<STDIN>); do_something_with($t)'consente di elaborare JSON con un minimo sforzo. Devi ancora dire al computer cosa fare con i dati in qualche modo.
Gilles 'SO- smetti di essere malvagio' il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.