Разбор XML, JSON и более новых форматов файлов данных в UNIX с использованием утилит командной строки

9

В среде Unix есть несколько отличных инструментов для анализа текста в различных формах. Однако в последнее время данные не в традиционных (исторических) форматах (CSV, TSV, основанных на записях или других основанных на разделителях), как это было раньше. В наши дни данные обмениваются в структурированных форматах, таких как XML / JSON.

Я знаю, что есть несколько хороших инструментов, таких как sed, awk и Perl, которые могут сжечь практически любую форму данных. Однако для работы со структурированными данными такого типа часто приходится писать законченную программу, и, учитывая ограниченное время, необходимое для извлечения информации, нужно сесть и выяснить всю логику того, что нужно запрашивать и помещать. это программно. Иногда это не так - в основном потому, что информация, извлеченная из этих файлов, служит входом для дальнейшей работы; также из-за времени, которое требуется для поиска подходящего решения и его кодирования. Необходим инструмент командной строки с достаточным количеством ключей для поиска, запроса и вывода данных.

Я ищу инструменты, которые берут XML / JSON или другие формы структурированных данных и выгружают их в другие форматы, такие как CSV и т. Д., Чтобы оттуда можно было использовать другие команды для получения любой информации из него.

Есть ли какие-либо утилиты командной строки, о которых вы знаете, которые выполняют такую ​​работу? Для этого уже есть сценарии awk / Perl?

Kamaal
источник

Ответы:

5

для xml есть http://xmlstar.sourceforge.net/

XMLStarlet - это набор утилит командной строки (инструментов), которые можно использовать для преобразования, запроса, проверки и редактирования документов и файлов XML, используя простой набор команд оболочки, аналогично тому, как это делается для простых текстовых файлов с использованием UNIX grep, sed, команды awk, diff, patch, join и т.д.

Вы также можете использовать xsltprocи аналогичные инструменты ( saxon).

для JSON: я также думаю, что лучше просто использовать Python, Ruby, Perl и преобразовать его.

Акира
источник
jqхороший инструмент для анализа JSON в оболочке: stedolan.github.io/jq
Kusalananda
4

Я думаю, что для этого могут быть успешно использованы модули Perl, Python или Ruby. И любой из них может быть использован для написания сценариев.

Алекс
источник
Моя цель заключалась в том, чтобы избежать написания сценария и попытаться сделать это с помощью команды. Написание сценария победит всю цель этого вопроса.
Камал
Вы считаете ruby -e 'program text'"написание сценария"?
Алекс
Я думаю, что я не понял вас правильно. Где я могу получить «текст программы»?
Камал
@kamaal: не знаю. Google? Документы для вашего выбора языка сценариев? CPAN приходит на ум, если вы используете Perl.
Алекс
@kamaal: По мере того, как формат данных становится более сложным, описания операций, которые нужно выполнять, становятся длиннее. Например, perl -0777 -MJSON -e '$t=from_json(<STDIN>); do_something_with($t)'позволяет обрабатывать JSON с минимальными усилиями. Вы все еще должны сказать компьютеру, что делать с данными как-то.
Жиль "ТАК - перестань быть злым"