我想比较两个json文件,如下所示:
[
{
"type" : 1,
"children" : {
"nsubj" : {
"role" : "topic",
"POS" : [
"noun"
]
}
},
"role" : "vehicle",
"POS" : [
"noun"
]
},
和另一个采用相似的格式,但两者之间存在一些差异,因为一个json文件由3336行组成,而另一个由3724行组成。我想写一个shell脚本,它可以逐行比较两个,每当找到差异时,输出差异发生的行号。
答案 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)