我正在 Ansible 中生成一个 yaml 模板,并尝试截断两个连接的字符串:
这里以下代码不起作用,因为连接没有正确地通过管道传输到 regex_replace 中。
我只想要前 n 个字符(本例中为前 10 个字符)
通常我可以将这两个组合成一个变量,然后执行
{{variabel [:10] }}
但在这种情况下我无法做到这一点,因为我正在处理的文件与变量组合,然后保存为 yaml 文件......
基本上我想截断字符串而不先组合或创建新变量。
- hosts: localhost
gather_facts: False
vars:
foo: "somelongstring"
tasks:
- name: Display debug output
debug:
msg: "{{ foo + '-moretext' | regex_replace('^.{0,10}', '\\1') }} "
要对复杂表达式(而不是一系列过滤器)应用过滤器或运算符,必须用括号将其括起来。
因此,要在 1 个操作中截断串联结果:
msg: "{{ (foo + '-moretext')[:10] }} "
顺便说一句,还有truncate filter http://jinja.pocoo.org/docs/2.9/templates/#truncate:
msg: "{{ (foo + '-moretext') | truncate(10, True, '') }} "
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)