使用命令行实用程序在UNIX中解析XML,JSON和较新的数据文件格式


9

Unix环境中有一些出色的工具可以解析各种形式的文本。但是,最近,数据不再是以前的传统(历史)格式(CSV,TSV,基于记录或基于其他分隔符的格式)。这些天的数据以XML / JSON之类的结构化格式进行交换。

我知道有一些很好的工具,例如sed,awk和Perl,它们可以减少几乎任何形式的数据。但是,要使用这种结构化数据,通常必须编写一个完整的程序,并且由于提取信息的时间很少,因此必须坐下来弄清楚要查询和放置的内容的整个逻辑。以编程方式将其关闭。有时这还不行–基本上是因为从这些文件中提取的信息充当了进一步工作的输入;还因为搜索适当的解决方案并将其编码所需的时间。需要具有足够开关的命令行工具来查找,查询和转储数据。

我正在寻找采用XML / JSON或其他形式的结构化数据并将其转储为csv等其他格式的工具,以便从那里可以使用其他命令从中获取任何信息。

您知道有哪些命令行实用程序可以完成这种工作吗?已经有可用的awk / Perl脚本了吗?

Answers:


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模块可以成功地用于此。这些都可以用于脚本编写。


我的主要目的是避免编写脚本,而是尝试使用命令来代替。编写脚本将破坏该问题的全部目的。
kamaal 2011年

您是否考虑ruby -e 'program text'“编写脚本”?
Alex

我想我不太了解你。在哪里可以获得“程序文本”?
kamaal 2011年

@kamaal:不知道。谷歌?您选择的脚本语言的文档?如果您使用Perl,就会想到CPAN。
Alex

@kamaal:随着数据格式变得越来越复杂,要执行的操作的描述也越来越长。例如,perl -0777 -MJSON -e '$t=from_json(<STDIN>); do_something_with($t)'让您以最少的麻烦处理JSON。您仍然必须以某种方式告诉计算机如何处理数据。
吉尔(Gilles)“所以,别再邪恶了”,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.