我想比较两个如下所示的json文件:
[
{
"type" : 1,
"children" : {
"nsubj" : {
"role" : "topic",
"POS" : [
"noun"
]
}
},
"role" : "vehicle",
"POS" : [
"noun"
]
},
Run Code Online (Sandbox Code Playgroud)
另一个格式相似,但是两者之间有些区别,因为一个json文件由3336行组成,而另一个json文件由3724行组成。我想编写一个shell脚本,逐行比较这两个脚本,并且每当发现差异时,输出发生差异的行号。
小智 11
要比较json文件,您应该将它们转换为具有相同顺序的键。jq(https://stedolan.github.io/jq/)是这项工作的很好工具,您可以在其中执行以下操作:
jq -S . fileA.json > fileA_fmt.json
jq -S . fileB.json > fileB_fmt.json
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用自己喜欢的工具进行文本文件比较。在纯命令行中,我喜欢kdiff3用于GUI或仅使用diff,例如:
diff fileA_fmt.json fileB_fmt.json
Run Code Online (Sandbox Code Playgroud)
小智 7
只是为了更新 bartolomeon_n 的答案,您实际上可以在一行上完成这一切。
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8953 次 |
| 最近记录: |