我在Zabbix代理配置中有一个字符串,如
HostMetadata=Linux
我想用变量“nginx”将其更改为:
HostMetadata=Linux nginx
这种变化必须是幂等的。但当我两次使用代码时,行变为
HostMetadata=Linux nginx nginx
我的代码:
- name: regexp
lineinfile:
path: /etc/zabbix/zabbix_agentd.conf
regexp: '^(HostMetadata=Linux.*)$'
line: '\1 nginx'
backrefs: yes
tags: regexp
我尝试了“^HostMetadata=((?!nginx)。)*$”,但它中断了下一步,结果将是“x nginx”
我想创建可重用代码并添加新参数。例如:
VAR=nginx
"HostMetadata=Linux" -> "HostMetadata=Linux nginx"
VAR=apache
"HostMetadata=Linux nginx" -> "HostMetadata=Linux nginx apache"
VAR=nginx
"HostMetadata=Linux nginx apache" -> "HostMetadata=Linux nginx apache" (nothing changed)
您应该只捕获需要保留的部分,其余部分应该匹配
你可以用
见regex demo
详细信息
^
-字符串的开头(HostMetadata=Linux)
-捕获组#1(用替换字符串中的\1
引用):文本字符串.*
-字符串的剩余部分,尽可能多的0个或更多字符(换行字符除外)李>相关问题 更多 >
编程相关推荐