首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个json文件: shell脚本

比较两个json文件: shell脚本
EN

Stack Overflow用户
提问于 2013-12-31 09:22:31
回答 3查看 17.4K关注 0票数 9

我想比较两个如下所示的json文件:

代码语言:javascript
复制
[
   {
      "type" : 1,
      "children" : {
         "nsubj" : {
            "role" : "topic",
            "POS" : [
               "noun"
            ]
         }
      },
      "role" : "vehicle",
      "POS" : [
         "noun"
      ]
   },

另一个是类似的格式,但两者之间有一些区别,因为一个json文件由3336行组成,而另一个json文件由3724行组成。我想写一个shell脚本,它会逐行比较这两个脚本,无论何时发现差异,都会输出出现差异的行号。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-31 09:24:28

只要使用diff即可。就像在

代码语言:javascript
复制
diff --unified file1.json file2.json
票数 14
EN

Stack Overflow用户

发布于 2017-05-09 06:42:27

要比较json文件,您应该对它们进行转换,使它们具有相同的键顺序。jq (https://stedolan.github.io/jq/)是这项工作的一个非常好的工具,您可以在其中执行以下操作:

代码语言:javascript
复制
jq -S . fileA.json > fileA_fmt.json
jq -S . fileB.json > fileB_fmt.json

然后,您可以使用您喜欢的工具进行文本文件比较。我喜欢用于图形用户界面的kdiff3,或者在纯命令行中只是简单的比较,例如:

代码语言:javascript
复制
diff fileA_fmt.json fileB_fmt.json
票数 20
EN

Stack Overflow用户

发布于 2020-11-22 09:19:33

更新一下来自bartolomeon_n的答案,您可以在一行中完成所有这些操作。

代码语言:javascript
复制
diff <(jq -S . fileA.json) <(jq -S . fileB.json)
# or, with nice columns and colours:
diff -y --left-column --color <(jq -S . fileA.json) <(jq -S . fileB.json)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20850289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档