2024-05-15 15:47:23 发布
网友
我在ansibe中设置了一个事实,该变量的值带有连字符,如“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"
^(.*)
从第一个backreference中的字符串开始保留所有内容
-[^-]+$
查找最后一个“-”后跟非“-”-”字符,直至字符串结束。
\\1
用第一个反向引用替换字符串。
一个选项是使用split()。下面的剧本
vars: var1: dos-e1-south-209334567829102380 tasks: - set_fact: var2: "{{ var1.split('-') }}" - debug: msg: "{{ var2.0 }}-{{ var2.1 }}-{{ var2.2 }}"
给予
另一个选项是ansibles正则表达式过滤器,您可以在这里找到:https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#regular-expression-filters
结果相同:
regex的解释:
从第一个backreference中的字符串开始保留所有内容
查找最后一个“-”后跟非“-”-”字符,直至字符串结束。
用第一个反向引用替换字符串。
一个选项是使用split()。下面的剧本
给予
相关问题 更多 >
编程相关推荐