【发布时间】:2020-02-13 22:10:11
【问题描述】:
我正在尝试在 for 循环内逐行解析文本文件。我可以很好地解析 JSON 数据,但一个看似简单的任务在这里失败了。 Jinja 似乎不是基于换行符来描述的。
在我的 YAML 剧本中,我已经声明了源文件和查找(查询)函数:
vars:
myfile: /some/text/file.txt
myfile_list: "{{ query('file', myfile) }}"
源文件“myfile”只是一个 CIDR 格式的 IP 列表:
1.2.3.4/32
5.6.7.8/32
10.20.30.0/24
在 Jinja2 模板文件中,我正在运行一个 for 循环:
{% for line in myfile_list %}
permit ip {{ line }} any
{% endfor %}
想要的输出是:
permit ip 1.2.3.4/32 any
permit ip 5.6.7.8/32 any
permit ip 10.20.30.0/24 any
相反,我得到了这个:
permit ip 1.2.3.4/32
5.6.7.8/32
10.20.30.0/24 any
我已经尝试了查找插件。设置'wantlist = True'。使用列表过滤器在查找调用之后。我要么每行得到一个字符,要么得到一个文本块,如上所示。如果我对我的源文件运行 Linux shell 命令“文件”,它会被视为“ASCII 文本”。
【问题讨论】: