我有一个复杂的问题。以下是我要编辑的ndxconfig.ini
文件
# /etc/ndxconfig.ini will override this file
# if APP_ID is added in service propery, service discovery will be using marathon;
# HOST/PORT specified will override values retrieved from marathon
[MARATHON]
HOSTS = {{ ','.join(groups['marathon'])}}
PORT = 8080
PROTOCOL = http
SECRET = SGpQIcjK2P7RYnrdimhhhGg7i8MdmUqwvA2JlzbyujFS4mR8M88svI7RfNWt5rnKy4WHnAihEZmmIUb940bnlYmnu47HdUHE
[MYSQL]
; APP_ID = /neon/infra/mysql
HOST = {{keepalived_mysql_virtual_ip}}
PORT = 3306
SECRET = tIUFN1rjjDBdEXUsOJjPEtdieg8KhwTzierD48JsgDeYc84DD6Uy5a6kzHfKolq1MNS1DKwlSqxENk33UulJd9DPHPzYCxFm
我想将特别是马拉松协议的conf从http更改为https 。不是别人的协议conf。我必须在 PROTOCOL = http
行下方匹配[MARATHON]
3行。我研究了,找不到任何解决方案。 sed解决方案下只有1行。
一个想法卡住了我的想法是特地grep [MARATHON]
和下面的3行以及结尾的1行。我不知道。
如何解决呢?请帮忙。
答案 0 :(得分:2)
找到解决办法here
sed '/\[MARATHON\]/{N;N;N;s/http/https/;}' <file>
答案 1 :(得分:1)
如果有python
可用,则可以使用crudini:
crudini --set ndxconfig.ini MARATHON protocol https
答案 2 :(得分:0)
这对ed
来说是一个尖叫,它将文件视为一个整体,而不像sed
那样一次处理一行(而且也不取决于非posix的可用性{ {1}}的扩展名-i
,用于文件的就地编辑):
sed
这将替换块中以与MARATHON匹配的行并以空行结束的PROTOCOL行。协议条目可以是第二行,第三行,第四行等;没关系如果该协议已经是https,则不会执行任何操作(除了打印问号)