![使用 sed 在文件中查找匹配项并将其替换为其他文件的内容](https://linux22.com/image/926463/%E4%BD%BF%E7%94%A8%20sed%20%E5%9C%A8%E6%96%87%E4%BB%B6%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%8C%B9%E9%85%8D%E9%A1%B9%E5%B9%B6%E5%B0%86%E5%85%B6%E6%9B%BF%E6%8D%A2%E4%B8%BA%E5%85%B6%E4%BB%96%E6%96%87%E4%BB%B6%E7%9A%84%E5%86%85%E5%AE%B9.png)
我有一个类似这样的内容文件:
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"]}
]