我有一个类似这样的内容文件:
content.json(对象数组)
[
{ "interval": 1, "expired": 3, "ignored": [ ".git", ".p4" ]},
{ "interval": 2, "expired": 4, "ignored": [ ".git", ".p4" ]},
]
有一个配置文件具有相似的内容但不同的值。
config.json(对象值)
{ "interval": 3, "expired": 3, "ignored": [ ".git", ".p4" ]},
{ "interval": 4, "expired": 4, "ignored": [ ".git", ".p4" ]},
我的目标是将 config.json 文件的内容附加到 content.json 文件中,这样新的 content.json 文件将变成:
[
{ "interval": 1, "expired": 3, "ignored": [ ".git", ".p4" ]},
{ "interval": 2, "expired": 4, "ignored": [ ".git", ".p4" ]},
{ "interval": 3, "expired": 3, "ignored": [ ".git", ".p4" ]},
{ "interval": 4, "expired": 4, "ignored": [ ".git", ".p4" ]},
]
我的想法是从 content.json 文件中找到},\n]
正则表达式并将其替换为 config.json 文件的内容。由于我正在远程运行这些命令,我的想法是使用 sed 将其作为单个命令运行。但不知何故,我没有在 sed 中获得任何适当的文档/帮助来实现这一点。
有人可以帮忙吗?
答案1
你的两个json文件是错误的。
首先,你必须删除最后一个逗号
[
{ "interval": 1, "expired": 3, "ignored": [ ".git", ".p4" ]},
{ "interval": 2, "expired": 4, "ignored": [ ".git", ".p4" ]}
]
最后必须添加方括号并删除最后一个逗号
[
{ "interval": 3, "expired": 3, "ignored": [ ".git", ".p4" ]},
{ "interval": 4, "expired": 4, "ignored": [ ".git", ".p4" ]}
]
使用杰奇在这两个文件上并运行
jq -sc add input01.json input02.json
你将会拥有
[
{"interval":1,"expired":3,"ignored":[".git",".p4"]},
{"interval":2,"expired":4,"ignored":[".git",".p4"]},
{"interval":3,"expired":3,"ignored":[".git",".p4"]},
{"interval":4,"expired":4,"ignored":[".git",".p4"]}
]