【发布时间】:2019-12-16 06:35:29
【问题描述】:
我正在尝试从打印到标准输出的 SQL 命令的结果中提取值。
first second
29494060 23004496
29774383 22979864
我想把它解析成一个看起来像这样的数据结构
[
{ first: 29494060, second: 23004496 },
{ first: 29774383, second: 22979864 }
]
这样我就可以访问每条记录的值,例如 {{ item.first }} 和 {{ item.second }}。
我已经能够通过使用regex_replace 过滤器提取的值创建一个对象文字来提取单个记录。
- set_fact:
items: { first: "{{ item | regex_replace('\\s*?(\\d+)\\s*?(\\d+)', '\\1') }}", second: "{{ item | regex_replace('\\s*?(\\d+)\\s*?(\\d+)', '\\2') }}" }
loop: '{{ command_out.stdout_lines }}'
这只保留最后一行的结果。我无法为每个结果创建一个列表。由于嵌套的 Jinja 模板,我无法使用像 items: "{{ items | default([]) + [{…}] }}" 这样的列表连接。
如何将打印的数据表提取到对象列表中?
【问题讨论】:
标签: parsing ansible jinja2 ansible-2.x ansible-template