【问题标题】:How to filter a string in ansible using regex如何使用正则表达式过滤ansible中的字符串
【发布时间】:2021-03-18 10:55:12
【问题描述】:

我正在使用 ansible 读取一个值并解析它

价值 链接:hdfs:///test/test2

输出应该是:/test/test2

Ansible 不起作用:

  • 设置事实: my_var: "{{ 链接 | regex_search('hdfs://'}}" delegate_to: 本地主机

【问题讨论】:

    标签: regex ansible


    【解决方案1】:

    您可以尝试如下方式

    • 基础变量应设置为hdfs:///test/test2
    - name: regex replace
      set_fact:
        final_var: "{{  basevariable | regex_replace(reg_search, reg_replace)  }}"
      tags:
        - reg-replace
    

    More info

    【讨论】:

      【解决方案2】:

      下面的任务完成了这项工作

          - set_fact:
              my_var: "{{ link|regex_replace(_regex, _replace) }}"
            vars:
              _regex: '^(.*)/(.*)/(.*)$'
              _replace: '/\2/\3'
      

      给予

        my_var: /test/test2
      

      简单的 split&join 也可以。下面的任务给出了相同的结果

          - set_fact:
              my_var: "/{{ link.split('/')[-2:]|join('/') }}"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-13
        • 1970-01-01
        • 2020-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-07
        相关资源
        最近更新 更多