在ansible中用多个值替换多个模式

在ansible中用多个值替换多个模式

本文介绍了在ansible中用多个值替换多个模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 ansible 中使用 regex_replace 过滤器.我可以让它工作,但它真的很麻烦.这就是我的做法

I am using regex_replace filter in ansible. i can make it work, but its really cumbersome .This is how i am doing

- set_fact:
    variable: "{{ value | regex_replace("84","89") | regex_replace("76","78") | regex_replace("45","23"}}"

有没有办法,我可以通过管道 regex_replace 一次并用多个值替换多个模式.

Is there a way, i can pipe regex_replace one time and replace multiple patterns with multiple values.

推荐答案

A:不,这是不可能的.但是你可以在循环中做到这一点.例如

A: No. It's not possible. But you can do it in the loop. For example

  vars:
    my_var: "ABCDEFGH"

  tasks:
    - set_fact:
        my_var: "{{ my_var | regex_replace(item.regex, item.replace) }}"
      loop:
        - {regex: "A", replace: "1"}
        - {regex: "C", replace: "3"}
        - {regex: "E", replace: "5"}
    - debug:
        var: my_var

给予

    "my_var": "1B3D5FGH"

或者,为了最小化代码,下面的任务给出相同的结果

Or, to minimize the code, the task below gives the same result

    - set_fact:
        my_var: "{{ my_var | regex_replace(item.0, item.1) }}"
      loop:
        - ["A", "1"]
        - ["C", "3"]
        - ["E", "5"]

这篇关于在ansible中用多个值替换多个模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-31 18:41