比较两个json文件:shell脚本

时间:2013-12-31 01:22:31

标签: json shell

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

[
   {
      "type" : 1,
      "children" : {
         "nsubj" : {
            "role" : "topic",
            "POS" : [
               "noun"
            ]
         }
      },
      "role" : "vehicle",
      "POS" : [
         "noun"
      ]
   },

和另一个采用相似的格式,但两者之间存在一些差异,因为一个json文件由3336行组成,而另一个由3724行组成。我想写一个shell脚本,它可以逐行比较两个,每当找到差异时,输出差异发生的行号。

3 个答案:

答案 0 :(得分:5)

只需使用差异。喜欢

diff --unified file1.json file2.json

答案 1 :(得分:4)

要比较json文件,您应该将它们转换为具有相同的键顺序。这项工作非常好的工具是 jq https://stedolan.github.io/jq/),你可以这样做:

jq -S . fileA.json > fileA_fmt.json
jq -S . fileB.json > fileB_fmt.json

然后,您可以使用自己喜欢的工具进行文本文件比较。我喜欢GUI的 kdiff3 ,或者在纯命令行中只需简单的 diff ,例如:

diff fileA_fmt.json fileB_fmt.json

答案 2 :(得分:0)

只需更新bartolomeon_n的答案,您实际上就可以在一行上完成所有操作。

diff <(jq -S . fileA.json) <(jq -S . fileB.json)