【发布时间】:2019-06-28 09:10:21
【问题描述】:
我正在使用正则表达式 find_all 过滤网络命令的输出,我已经使用 regex101 测试了带有输出的正则表达式,我确信它是正确的,输出也符合预期但是当我尝试过滤时我认为它在剧本中不匹配。结果我总是得到一个空白的消息。
- name: extract env
lineinfile:
line: "{{ env.stdout[0] }}"
dest: "{{ output_path }}/env_of_{{inventory_hostname}}.csv"
create: True
- debug:
msg: "{{ env.stdout[0] | regex_findall('^.*one minute: (\\d+%); five.*$') }}"
输出应该是一个百分比数字,但这是我得到的:
TASK [debug] ********************************************************************************************************
task path: /ansible/testcsv.yml:60
ok: [R1] => {
"msg": []
}
ok: [R2] => {
"msg": []
}
ok: [R3] => {
"msg": []
}
【问题讨论】:
-
请检查您的问题,添加更多细节;如果我们看不到
env.stdout[0]中的实际内容,我们应该如何知道为什么正则表达式不匹配? -
内容太大,无法分享,但正则表达式应匹配此部分:CPU 利用率五秒:13%/0%;一分钟:6%;五分钟:4%;只会提取 1 分钟的值