在Ansible中使用regex_replace

时间:2019-07-16 16:17:09

标签: ansible jinja2

我用此值进行了变量测试 D:\\Scripts\\Exports\\VM_State_201907161157.csv

我想用"\\"替换所有"\",所以最终结果应该是D:\Scripts\Exports\VM_State_201907161157.csv

如何在ansible中使用regex_replace做到这一点:-

  - set_fact:
       test2: "{{ test | regex_replace() }}"

1 个答案:

答案 0 :(得分:0)

引用7.3.2. Single-Quoted Style

  

单引号样式由周围的“'”指示符指定。因此,在单引号标量内,需要重复这样的字符。这是在单引号标量中执行转义的唯一形式。特别是,可以自由使用“ \”和“”字符。...

以下任务

  vars:
    # string1: 'D:\\Scripts\\Exports\\VM_State_201907161157.cs'
    string1: 'D:\\Scr'
  tasks:
    - debug:
        var: string1|list
    - set_fact:
        string2: |-
          {{ string1|regex_replace( '\\\\', '\\' ) }}
    - debug:
        var: string2|list

给予(将字符串转换为列表以查看元素)

TASK [debug] ********************************************************************************
ok: [localhost] => {
    "string1|list": [
        "D", 
        ":", 
        "\\", 
        "\\", 
        "S", 
        "c", 
        "r"
    ]
}

TASK [set_fact] *****************************************************************************
ok: [localhost]

TASK [debug] ********************************************************************************
ok: [localhost] => {
    "string2|list": [
        "D", 
        ":", 
        "\\", 
        "S", 
        "c", 
        "r"
    ]
}

还可以比较通过模板创建的文件中的字符串

string1: {{ string1 }}
string2: {{ string2 }}

给出

string1: D:\\Scr
string2: D:\Scr