Nis*_*ngh 25 string replace ansible
我正在使用[文件查找],它读取整个文件并将内容存储在变量中.我的游戏看起来像这样:
- name: Store foo.xml contents in a variable
set_fact:
foo_content: "{{ lookup('file', 'foo.xml' ) | replace('\n', '')}}"
Run Code Online (Sandbox Code Playgroud)
所以上面的代码读取foo.xml文件并将其存储在变量中,但问题是当foo.xml行中有换行符时,它还包括变量中的换行符.
我foo.xml是这个档案:
<?xml version="1.0" encoding="utf-8"?>
<initialize_param>
<secrets>
<my_secret id="99">3VMjII6Hw+pd1zHV5THSI712y421USUS8124487128745812sajfhsakjfasbfvcasvnjasjkvbhasdfasgfsfaj5G8A9+n8CkLxk7Dqu0G8Jclg0eb1A5xeFzR3rrJHrb2GBBa7PJNVx8tFJP3AtF6ek/F/WvlBIs2leX2fq+/bGryKlySuFmbcwBsThmPJC5Z5AwPJgGZx</my_secret>
</secrets>
</initialize_param>
Run Code Online (Sandbox Code Playgroud)
输出删除换行符\n但也包含选项卡\ r&\ t
我需要摆脱\n,需要摆脱额外的格式(\ r&\ t),此外,在替换过滤器后,我得到错误,同时触发数据库更新查询
stderr: /bin/sh: 1: cannot open ?xml: No such file
Run Code Online (Sandbox Code Playgroud)
And*_*ier 37
使用Jinja 装饰过滤器:
"{{ lookup('file', 'foo.xml' ) | trim }}"
Run Code Online (Sandbox Code Playgroud)
udo*_*dan 26
你可以replace用过滤器吗?
contents: "{{ lookup('file', '/etc/foo.txt') | replace('\n', '')}}"
Run Code Online (Sandbox Code Playgroud)
您可以使用regex_replace过滤器,因为trim正如您在问题中提到的那样,它不会清除其他换行符。
"{{ some_stdout_to_clear | regex_replace('[\\r\\n\\t]+','') }}"
Run Code Online (Sandbox Code Playgroud)