Python ansible模块外壳中的regexp问题
在我的ansible剧本中,任务实现了用字符替换文件文本中的问题。我正在使用带sed的ansible模块shell 我想认识到这个问题 txt.file:Python ansible模块外壳中的regexp问题,python,regex,shell,ansible,Python,Regex,Shell,Ansible,在我的ansible剧本中,任务实现了用字符替换文件文本中的问题。我正在使用带sed的ansible模块shell 我想认识到这个问题 txt.file:一些文本@@VAR\u NUMBER\u ONE@ 新的txt.file:一些文本{{VAR\u NUMBER\u ONE}} - name: sed shell: sed -i 's|@@\([a-zA-Z_ ]*\)@@|\{{\1}}|g' txt.file 我犯了致命的错误 致命:[localhost]:失败!=>{
一些文本@@VAR\u NUMBER\u ONE@
新的txt.file:一些文本{{VAR\u NUMBER\u ONE}}
- name: sed
shell: sed -i 's|@@\([a-zA-Z_ ]*\)@@|\{{\1}}|g' txt.file
我犯了致命的错误
致命:[localhost]:失败!=>{
“msg”:“在模板化's|@\([a-zA-Z\*\)@\{{1}}}}g'时发生未经处理的异常。错误是,原始消息:在25处出现意外字符u'\\”
}
Q:“用字符替换文件中的文本”
txt.file之前:Some text@@VAR\u NUMBER\u ONE@
txt.file之后:Some text{{VAR\u NUMBER\u ONE}
- name: sed
shell: sed -i 's|@@\([a-zA-Z_ ]*\)@@|\{{\1}}|g' txt.file
A:下面的任务就可以了
- replace:
path: "txt.file"
regexp: '^(.*)@@(.*)@@$'
replace: '{{ "\1" + "{{" + "\2" + "}}" }}'
regexp字符串解释如下:
字符串的开头^
存储在(.*)
\1
匹配@@@
存储在(.*)
\2
匹配@@@
字符串的结尾$
{{
和}}
中使用了扩展变量。尝试sed-i's|@\([^@]*\)@{\1}}}{g'txt.file
。不确定,但可能需要将每个反斜杠加倍。