替换文件中括号内的文本

替换文件中括号内的文本

我已经在代码中配置了服务器实例

"instance": [
   { "address": 127.0.0.1,
     "port": 6514
},
{"address": 127.0.0.1,
 "port": 6515
}
]

我还有一个文件(/root/home/inst.txt),其格式为

{ "address": 127.0.0.1,
     "port": 6514
},
{"address": 127.0.0.1,
 "port": 6515
},
{"address": 127.0.0.1,
 "port": 6516
}

我想从文件代码中替换服务器实例。我试过

 sed -e '/"instances": \[/,/\]/{/r /root/home/inst.txt/!d}'

但失败了

答案1

实际上,最好使用能够理解您的(几乎但不完全是 JSON?)文件格式的工具。

但是,我思考你想要的是

sed -e '/^"instance": \[/,/^]/{/^"instance": \[/{p;r /root/home/inst.txt' -e '};/^]/!d}' code

那是:

  • ^"instance": \[匹配和之间的行范围^](请注意,我添加了行首锚点;您可能认为这些不是必需的)

  • 打印范围的第一行,然后read 并将内容放入队列,inst.txt以便在循环结束时插入

  • 删除除终止符之外的范围内的行]

用 分割表达式-e可以防止该};/^]/!d}部分被视为要读取的文件名的一部分。

相关内容