我正在 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') }} "
Run Code Online (Sandbox Code Playgroud)
要将过滤器或运算符应用于复杂表达式(过滤器序列除外),您必须用括号将其括起来。
因此,要在 1 个操作中截断连接的结果:
msg: "{{ (foo + '-moretext')[:10] }} "
Run Code Online (Sandbox Code Playgroud)
顺便说一句,还有truncate过滤器:
msg: "{{ (foo + '-moretext') | truncate(10, True, '') }} "
Run Code Online (Sandbox Code Playgroud)