如何在Ansible中与delimi进行价值分割

2024-05-15 15:47:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在ansibe中设置了一个事实,该变量的值带有连字符,如“dos-e1-south-209334567829102380”。我想分开,所以只能得到“dos-e1-south”

这是剧本

- set_fact:
    config: "{{ asg.results|json_query('[*].launch_configuration_name') }}"

- debug:
    var: config

Tags: configjsonquerylaunch字符results事实fact
2条回答

另一个选项是ansibles正则表达式过滤器,您可以在这里找到:https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#regular-expression-filters

vars:
  var: dos-e1-south-209334567829102380
tasks:
  - debug:
      msg: '{{ var | regex_replace("^(.*)-[^-]+$", "\\1") }}'

结果相同:

"msg": "dos-e1-south"

regex的解释:

^(.*)

从第一个backreference中的字符串开始保留所有内容

-[^-]+$

查找最后一个“-”后跟非“-”-”字符,直至字符串结束。

\\1

用第一个反向引用替换字符串。

一个选项是使用split()。下面的剧本

vars:
  var1: dos-e1-south-209334567829102380
tasks:
  - set_fact:
      var2: "{{ var1.split('-') }}"
  - debug:
      msg: "{{ var2.0 }}-{{ var2.1 }}-{{ var2.2 }}"

给予

"msg": "dos-e1-south"

相关问题 更多 >