我正在使用下面的代码将旧的主机名替换为新的主机名,除了以数字开头的主机名之外,其他主机名都起作用。(OLD_HOSTNAME和NEW_HOSTNAME为vars
)
tasks:
- name: "Updating file"
replace:
name: /tmp/interfaces
backup: yes
regexp: '(\s+){{ OLD_HOSTNAME }}(\s+)'
replace: '\1{{ NEW_HOSTNAME }}\2'
如果我将\ 1替换为\ g <1>,也将放置以数字开头的主机名。但是按照[doc,\1 is used ambiguously
和\g<1> used explicitly
)。
问题:此更改会影响主机名的任何其他格式吗?
否,使用显式形式不会影响其他主机名格式。
[NEW_HOSTNAME
以数字开头时出现问题的原因是,如果replace
为\123-server\2
,并且没有向后引用NEW_HOSTNAME
,则23-server
字符串将类似于\123
。使用显式形式可以保留您的原始意图。在我的示例中,replace
将变为\g<1>23-server\g<2>
。