Ash*_*har 3 formatting split ansible
这是我的剧本
---
- name: This is a hello-world example
hosts: localhost
vars:
mystr: "I.To.Be.war"
tasks:
- name: Hi
debug:
msg: "{{ mystr.split('.') | first | trim }}"
Run Code Online (Sandbox Code Playgroud)
输出:
I
Run Code Online (Sandbox Code Playgroud)
过滤器是在变量末尾trim
删除它。\r\n
但是,我希望有一个通用的解决方案,应该打印分割定界符最后一个元素之前的所有内容,即:.
。
预期输出:
I.To.Be
Run Code Online (Sandbox Code Playgroud)
注意:我不想要这样的解决方案,"{{ mystr.split('.')[0][1][2] }}"
因为它本质上不通用。
trim
到列表中的每个元素map
$ ansible localhost -m debug \
-a "msg={{ (mystr.split('.') | map('trim'))[:-1] | join('.') }}" \
-e "mystr=I.to.be.war"
localhost | SUCCESS => {
"msg": "I.to.be"
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用正则表达式来匹配字符串的第一部分
$ ansible localhost -m debug \
-a 'msg={{ mystr | regex_replace("^(.*)\\.[^.]*$", "\\1") }}' \
-e "mystr=I.to.be.war"
localhost | SUCCESS => {
"msg": "I.to.be"
}
Run Code Online (Sandbox Code Playgroud)