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

kam*_*aal 10 xml text-processing

Unix 环境有一些优秀的工具可以解析各种形式的文本。但是,最近,数据不再采用以前的传统(历史)格式(CSV、TSV、基于记录或其他一些基于分隔符的格式)。如今,数据以 XML/JSON 等结构化格式进行交换。

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

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

是否有任何命令行实用程序可以完成此类工作?是否已经有可用的 awk/Perl 脚本?

aki*_*ira 6

对于 xml,有http://xmlstar.sourceforge.net/

XMLStarlet 是一组命令行实用程序(工具),可用于使用简单的 shell 命令集转换、查询、验证和编辑 XML 文档和文件,其方式与使用 UNIX grep、sed、 awk、diff、patch、join 等命令。

您还可以使用xsltproc和类似的工具 ( saxon)。

对于 json:我也认为最好只使用 python、ruby、perl 并对其进行转换。

  • `jq` 是一个在 shell 中解析 JSON 的好工具:https://stedolan.github.io/jq/ (2认同)

ale*_*lex 4

我想 Perl、Python 或 Ruby 模块都可以成功地用于此目的。其中任何一个都可以用于编写脚本。