如何从变量中删除多余的垃圾?
How to remove excess garbage from a variable?
如何删除多余的引号和逗号,只保留有用的信息?
这是一个要使用的变量:
"ping.stdout_lines": [
[
"p",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
" SEQ HOST SIZE TTL TIME STATUS ",
" 0 192.168.0.1 56 64 1ms ",
" 1 192.168.0.1 56 64 1ms ",
" 2 192.168.0.1 56 64 1ms ",
" 3 192.168.0.1 56 64 1ms ",
" 4 192.168.0.1 56 64 1ms ",
" sent=5 received=5 packet-loss=0% min-rtt=1ms avg-rtt=1ms max-rtt=1ms"
]
]
我尝试通过正则表达式来完成,但没有结果。
想要的结果:
SEQ HOST SIZE TTL TIME STATUS
0 192.168.0.1 56 64 1ms
1 192.168.0.1 56 64 1ms
2 192.168.0.1 56 64 1ms
3 192.168.0.1 56 64 1ms
4 192.168.0.1 56 64 1ms
sent=5 received=5 packet-loss=0% min-rtt=1ms avg-rtt=1ms max-rtt=1ms
我怎么也想不通。
简单地使用 select 没有测试它拒绝空行,例如
- debug:
msg: "{{ item|select }}"
loop: "{{ ping.stdout_lines }}"
给予
msg:
- p
- ' SEQ HOST SIZE TTL TIME STATUS '
- ' 0 192.168.0.1 56 64 1ms '
- ' 1 192.168.0.1 56 64 1ms '
- ' 2 192.168.0.1 56 64 1ms '
- ' 3 192.168.0.1 56 64 1ms '
- ' 4 192.168.0.1 56 64 1ms '
- ' sent=5 received=5 packet-loss=0% min-rtt=1ms avg-rtt=1ms max-rtt=1ms'
如果要将过滤后的数据保存在变量中
pings: "{{ ping.stdout_lines|map('select')|list }}"
给予
pings:
- - p
- ' SEQ HOST SIZE TTL TIME STATUS '
- ' 0 192.168.0.1 56 64 1ms '
- ' 1 192.168.0.1 56 64 1ms '
- ' 2 192.168.0.1 56 64 1ms '
- ' 3 192.168.0.1 56 64 1ms '
- ' 4 192.168.0.1 56 64 1ms '
- ' sent=5 received=5 packet-loss=0% min-rtt=1ms avg-rtt=1ms max-rtt=1ms'
如何删除多余的引号和逗号,只保留有用的信息? 这是一个要使用的变量:
"ping.stdout_lines": [
[
"p",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
" SEQ HOST SIZE TTL TIME STATUS ",
" 0 192.168.0.1 56 64 1ms ",
" 1 192.168.0.1 56 64 1ms ",
" 2 192.168.0.1 56 64 1ms ",
" 3 192.168.0.1 56 64 1ms ",
" 4 192.168.0.1 56 64 1ms ",
" sent=5 received=5 packet-loss=0% min-rtt=1ms avg-rtt=1ms max-rtt=1ms"
]
]
我尝试通过正则表达式来完成,但没有结果。
想要的结果:
SEQ HOST SIZE TTL TIME STATUS
0 192.168.0.1 56 64 1ms
1 192.168.0.1 56 64 1ms
2 192.168.0.1 56 64 1ms
3 192.168.0.1 56 64 1ms
4 192.168.0.1 56 64 1ms
sent=5 received=5 packet-loss=0% min-rtt=1ms avg-rtt=1ms max-rtt=1ms
我怎么也想不通。
简单地使用 select 没有测试它拒绝空行,例如
- debug:
msg: "{{ item|select }}"
loop: "{{ ping.stdout_lines }}"
给予
msg:
- p
- ' SEQ HOST SIZE TTL TIME STATUS '
- ' 0 192.168.0.1 56 64 1ms '
- ' 1 192.168.0.1 56 64 1ms '
- ' 2 192.168.0.1 56 64 1ms '
- ' 3 192.168.0.1 56 64 1ms '
- ' 4 192.168.0.1 56 64 1ms '
- ' sent=5 received=5 packet-loss=0% min-rtt=1ms avg-rtt=1ms max-rtt=1ms'
如果要将过滤后的数据保存在变量中
pings: "{{ ping.stdout_lines|map('select')|list }}"
给予
pings:
- - p
- ' SEQ HOST SIZE TTL TIME STATUS '
- ' 0 192.168.0.1 56 64 1ms '
- ' 1 192.168.0.1 56 64 1ms '
- ' 2 192.168.0.1 56 64 1ms '
- ' 3 192.168.0.1 56 64 1ms '
- ' 4 192.168.0.1 56 64 1ms '
- ' sent=5 received=5 packet-loss=0% min-rtt=1ms avg-rtt=1ms max-rtt=1ms'