使用 sed 在文件中查找匹配项并将其替换为其他文件的内容

使用 sed 在文件中查找匹配项并将其替换为其他文件的内容

我有一个类似这样的内容文件:

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"]}
]

相关内容