mig*_*vid 4 regex yaml ansible
我正在使用Ansible使用该lineinfile模块在文件上设置一些变量。我遇到的问题是如何拥有一个足够灵活的正则表达式,以便在字符串中间保留一些空格。请看下面:
- name: Set DB IP in db conn file
lineinfile:
dest=/path/to/db_conn
regexp="{{ item.regexp }}"
line="{{ item.line }}"
with_items:
- { regexp: "^.?dbschema_audit=",
line: "$dbschema_audit=\'{{ db_schema_audit }}\';" }
- { regexp: "^.?dbschema_audit_trail\s\*=",
line: "$dbschema_audit_trail=\'{{ db_schema_audit_trail }}\';" }
Run Code Online (Sandbox Code Playgroud)
我要更改的文件具有以下行:
$dbschema_audit='a';
$dbschema_audit_trail ='a';
Run Code Online (Sandbox Code Playgroud)
我曾尝试不同的变化\s*有{,'并且\和似乎没有任何工作。我可以从那里获得一些智慧吗?
Ansible剧本采用YAML格式。在双引号标量中,以字符开头的\字符序列是转义序列,但是YAML规范说\s这不是有效的转义序列。
用双引号标量,您必须编写
"\\s"
Run Code Online (Sandbox Code Playgroud)
另外,在单引号中,该\字符没有特殊含义,因此您可以编写
'\s'
Run Code Online (Sandbox Code Playgroud)