从Ansible的变量中提取子字符串



我想从Ansible的变量中删除一个特定的子字符串,并将结果存储到另一个变量中。假设我有如下内容:

greeting: "Hello_World"

我想从greeting中删除子字符串"_World">并将结果存储在另一个Ansible变量中。

例子:greet_word: "Hello"

提前感谢!

问:,删除子串"_World">,

A:有更多的选项:

使用过滤器regex_replace
greet_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检查得到的结果

最新更新