将问题修改得更具体。将有 2 个 JSON 文件,其中第一个文件只有几个块。正如您所看到的,第二个将有很少的块,并且添加很少的重定向规则
"values": [
"/businessclass/articles/money.page",
"/businessclass/articles/1.page",
"/businessclass/articles/2.page"
],
Run Code Online (Sandbox Code Playgroud)
输出应该是 2 个文件的合并。包括json文件1的更改和Json 2更新的重定向规则。
JSON 文件 1
[
{
"name": "caching",
"options": {
"behavior": "MAX_AGE",
"mustRevalidate": false,
"ttl": "10m",
"defaultTtl": "30m"
}
},
{
"name": "/businessclass/articles/money.page",
"children": [],
"behaviors": [
{
"name": "redirect",
"options": {
"destinationPathOther": "/businessclass/articles/finance-and-operations.page"
}
}
],
"criteria": [
{
"name": "path",
"options": {
"matchOperator": "MATCHES_ONE_OF",
"values": [
"/businessclass/articles/money.page"
],
"matchCaseSensitive": false
}
}
],
"criteriaMustSatisfy": "all",
"comments": ""
}
]
Run Code Online (Sandbox Code Playgroud)
JSON 文件 2
{
"name": "/businessclass/articles/money.page",
"children": [],
"behaviors": [
{
"name": "redirect",
"options": {
"destinationPathOther": "/businessclass/articles/finance-and-operations.page"
}
}
],
"criteria": [
{
"name": "path",
"options": {
"matchOperator": "MATCHES_ONE_OF",
"values": [
"/businessclass/articles/money.page",
"/businessclass/articles/1.page",
"/businessclass/articles/2.page"
],
"matchCaseSensitive": false
}
}
],
"criteriaMustSatisfy": "all",
"comments": ""
}
Run Code Online (Sandbox Code Playgroud)
预期产出
[
{
"name": "caching",
"options": {
"behavior": "MAX_AGE",
"mustRevalidate": false,
"ttl": "10m",
"defaultTtl": "30m"
}
},
{
"name": "/businessclass/articles/money.page",
"children": [],
"behaviors": [
{
"name": "redirect",
"options": {
"destinationPathOther": "/businessclass/articles/finance-and-operations.page"
}
}
],
"criteria": [
{
"name": "path",
"options": {
"matchOperator": "MATCHES_ONE_OF",
"values": [
"/businessclass/articles/money.page",
"/businessclass/articles/1.page",
"/businessclass/articles/2.page"
],
"matchCaseSensitive": false
}
}
],
"criteriaMustSatisfy": "all",
"comments": ""
}
]
Run Code Online (Sandbox Code Playgroud)
出色地。规则的顺序可以更改。而且,有时可以将具有新名称的新规则添加到 json 文件中,例如“name”:“/businessclass/articles/money.page”。因此,无论发生什么变化,都必须找到增量并需要相应地合并文件。或者可以创建新的 json 文件,其中也包含合并的更改。
如果我正确理解你的问题,你只想输出一个包含每个文件中的对象的数组。在这种情况下,-s
我们已经为您做到了这一点,所以您只需要
jq -s . file1 file2
Run Code Online (Sandbox Code Playgroud)
如果您需要额外的转换,请编辑问题并给出您需要的简短摘要(我没有逐行比较预期结果与实际输出)。
编辑
我仍然不太确定您需要的转换的一般性质,但如果格式与示例中完全相同,并且您想要的只是将values
第一个文件中的字段替换为values
第二个文件中的字段内容,并保留其他一切,尝试
jq -s '.[0][1].criteria[0].options.values=.[1].criteria[0].options.values' file1 file2
Run Code Online (Sandbox Code Playgroud)
这里-s
以数组形式返回文件,.[0]
第一个文件和.[1]
第二个文件也是如此。然后它只选择静态路径,并首先更新单个匹配字段。
如果您的对象的顺序或数量是可变的,或者如果替换仅适用于匹配的对象等,请更新问题。
归档时间: |
|
查看次数: |
34279 次 |
最近记录: |