如何使用分隔符在Ansible中拆分值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用分隔符在Ansible中拆分值相关的知识,希望对你有一定的参考价值。

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

这是戏剧

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

- debug:
    var: config
答案

另一种选择是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"

Explanation for the regex:

^(.*)

保留第一个反向引用中字符串开头的所有内容

-[^-]+$

找到最后一个“ - ”后跟非“ - ”字符,直到字符串结尾。

\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"

以上是关于如何使用分隔符在Ansible中拆分值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中使用管道分隔符拆分文本文件,然后使列数等于属性值的数量?

如何使用逗号分隔值拆分列并存储在 PySpark Dataframe 中的数组中?如下所示

拆分字符串并在不同分隔符之前获取值

如何使用分隔符数组在 Java 中使用多个分隔符拆分字符串? [复制]

oracle 如何将一个字段里的值拆分为多个值显示出来

如何根据oracle plsql中列中的逗号分隔值拆分选择查询行