【问题标题】:replacing text between brackets from text in file从文件中的文本替换括号之间的文本
【发布时间】:2023-03-18 17:32:01
【问题描述】:

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

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

但失败了

【问题讨论】:

  • 当你展示了你想要的结果时,你可能会有更多的答案。还有更多案例,解释为什么你不想要echo '"instance": ['; cat root/home/inst.txt; echo "]"

标签: sed server client


【解决方案1】:

这可能对你有用(GNU sed):

sed -ne '/instances/,/\]/!{p;b};/instances/{p;r addrFile' -e '};/\]/p' mainFile

关闭隐式打印-n

如果当前行在instances] 之间,则打印当前行。

如果当前行在instances] 之间并且匹配instances,则打印当前行 addFile。

如果当前行介于instances] 之间并且匹配],则打印当前行。

替代方案:

sed -e '/instances/!b;p;r addrFile' -e ':a;N;/\]/!ba;s/.*\n//' mainFile

或者:

sed -e '/instances/{p;r addrFile' -e ':a;N;/\],/!s/\n//;ta;D}' mainFile

或者:

sed -ne '/instances/{p;r addrFile' -e ':a;/\],/!{n;ba}};p' mainFile

【讨论】:

    猜你喜欢
    • 2015-05-08
    • 2022-01-02
    • 2011-02-09
    • 2015-11-09
    • 2019-02-26
    • 1970-01-01
    • 2016-07-21
    • 2013-08-05
    • 2020-02-20
    相关资源
    最近更新 更多