【发布时间】:2017-10-13 11:56:46
【问题描述】:
我已经使用 jq 完成了一些解析任务,几天前才开始使用它并且正在享受它的多功能性,但是我在下面概述的一项任务有点复杂,我被困在摔跤中用 jq 超过这个。
我有 2 个文件,它们都具有相似的数据架构。文件 A 和 B,以及我希望得到的输出,如下所示:
文件 A:
[
{
"type": "hive-site",
"tag": 1507894175,
"properties" : {
"javax.jdo.option.ConnectionPassword" : "hortonworks1"
}
},
{
"type": "admin-properties",
"tag": 1507894175,
"properties": {
"fieldA": "valueA",
"fieldB": "valueB"
}
}
]
文件 B:
[
{
"type": "hive-site",
"properties" : {
"javax.jdo.option.ConnectionPassword" : "hortonworks2"
}
},
{
"type": "admin-properties",
"properties": {
"fieldA": "valueA",
"fieldB": "valueB",
"fieldC": "valueC"
}
},
{
"type": "other-type",
"properties": {
"newFieldA": "valueA",
"newFieldB": "valueB"
}
}
]
结果:文件 C(以文件 A 为基础,对文件 B 进行修改)
[
{
"type": "hive-site",
"tag": 1507894175,
"properties" : {
"javax.jdo.option.ConnectionPassword" : "hortonworks2"
}
},
{
"type": "admin-properties",
"tag": 1507894175,
"properties": {
"fieldA": "valueA",
"fieldB": "valueB",
"fieldC": "valueC"
}
},
{
"type": "other-type",
"tag": NEW,
"properties": {
"newFieldA": "valueA",
"newFieldB": "valueB"
}
}
]
我想从文件 B 中取出“属性”下的所有对,然后将它们推送到文件 A,更新现有的属性对(如果存在),或者将它们添加为自己的块(使用“新”标签作为显示)如果他们没有。
我找到了类似的答案(here 和 here),但没有一个足够接近,可以根据我的目的进行修改。
谢谢!!
【问题讨论】: