Ansible 2.2:替换模块 - 用于查找不匹配变量的正则表达式
Ansible 2.2 : Replace module - Regexp expression to find not matching variable
我正在尝试修改文件中的日志记录级别(存在于多行中)。为此,我使用 Ansible 2.2 的替换模块如下:
- replace:
dest: log.xml
regexp: '<level value=(?!"{{ log_level }}")'
replace: '<level value="{{ log_level }}"'
我的问题是它找到了正确的行,但它没有替换旧值。
例如 log_level 的结果:INFO 和旧值等于 WARN
<level value="INFO""WARN"/>
预期结果:
<level value="INFO"/>
有没有办法正确设置正则表达式以删除旧值?
这应该适合你:
- replace:
dest: log.xml
regexp: '<level value=(?!"{{ log_level }}").*/>'
replace: '<level value="{{ log_level }}"/>'
如果没有 .*
,您只匹配(和替换)<level value=
,后面没有 "{{ log_level }}"
,但不匹配后面的部分。
我正在尝试修改文件中的日志记录级别(存在于多行中)。为此,我使用 Ansible 2.2 的替换模块如下:
- replace:
dest: log.xml
regexp: '<level value=(?!"{{ log_level }}")'
replace: '<level value="{{ log_level }}"'
我的问题是它找到了正确的行,但它没有替换旧值。 例如 log_level 的结果:INFO 和旧值等于 WARN
<level value="INFO""WARN"/>
预期结果:
<level value="INFO"/>
有没有办法正确设置正则表达式以删除旧值?
这应该适合你:
- replace:
dest: log.xml
regexp: '<level value=(?!"{{ log_level }}").*/>'
replace: '<level value="{{ log_level }}"/>'
如果没有 .*
,您只匹配(和替换)<level value=
,后面没有 "{{ log_level }}"
,但不匹配后面的部分。