我正在尝试读取包含一些key=value
数据的文件。我能够使用ansible的文件查找功能来做到这一点。现在的问题是我想从输入文件中排除注释,但是不确定如何做。如何取反'^#
'(以#
开头的行)。我尝试使用此命令{{ input_parms.split("\n")|regex_search('^[^#]') }}
,但未按预期工作。
这是我的输入文件
->cat mydata.cfg
#parms
name: 'foo'
place: 'bar'
id: 1
我的剧本:
---
- hosts: localhost
vars:
parm_file: 'mydata.cfg'
input_parms: "{{ lookup('file', parm_file) }}"
tasks:
- debug: var=input_parms.split("\n")
当前输出:
ok: [localhost] => {
"input_parms.split(\"\n\")": [
"#parms",
"name: 'foo'",
"place: 'bar'",
"id: 1"
]
}
我的预期输出,没有注释行(#parms
):
ok: [localhost] => {
"input_parms.split(\"\n\")": [
"name: 'foo'",
"place: 'bar'",
"id: 1"
]
}
答案 0 :(得分:3)
您可以使用select
和match
过滤器来选择不以#
开头的行:
- debug:
var: input_parms.splitlines()|select('match', '^[^#]')|list
哪个会产生:
TASK [debug] *************************************************************************
ok: [localhost] => {
"input_parms.splitlines()|select('match', '^[^#]')|list": [
"name: 'foo'",
"place: 'bar'",
"id: 1"
]
}