【问题标题】:How to remove excess garbage from a variable?如何从变量中删除多余的垃圾?
【发布时间】:2022-01-14 06:38:06
【问题描述】:

如何删除多余的引号和逗号,以便只保留有用的信息? 这是一个可以使用的变量:

"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

我怎么也想不通。

【问题讨论】:

    标签: regex ansible yaml


    【解决方案1】:

    直接使用 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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 2021-08-30
      • 2013-01-02
      • 1970-01-01
      • 2014-08-12
      • 1970-01-01
      • 2014-09-12
      相关资源
      最近更新 更多