我想从Ansible的变量中删除一个特定的子字符串,并将结果存储到另一个变量中。假设我有如下内容:
greeting: "Hello_World"
我想从greeting中删除子字符串"_World">并将结果存储在另一个Ansible变量中。
例子:greet_word: "Hello"
提前感谢!
问:,删除子串"_World">,
A:有更多的选项:
使用过滤器regex_replacegreet_word: "{{ greeting|regex_replace('^(.*)_World(.*)$', '\1\2') }}"
为
greet_word: Hello
- 在下划线'_'上分割字符串并取第一项。下面的表达式给出相同的结果。
greet_word: "{{ greeting.split('_').0 }}
greet_word: "{{ greeting.split('_')|first }}
- 使用Jinja过滤器代替。下面的表达式给出相同的结果。
greet_word: "{{ greeting|replace('_World', '') }}"
您可以尝试set_fact模块和正则表达式
- name: Extract substring from a variable
set_fact:
new_variable: "{{ variable | regex_search() }}"
可以用任何在线服务测试正则表达式,也可以用debug检查得到的结果