You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible运行输出中显示文件内容时去除双引号

问题:Ansible输出文件内容时每行带双引号如何去除

用户有一个不含双引号的clean.txt文件,内容如下:

[wladmin@linuxhost ~]$ cat clean.txt
REPL session history will not be persisted.
 WDA-EMEA-PROD
{
  db: 'WDA-EMEA-PROD',
  collections: 53,
  ok: 1,
  '$clusterTime': {
    clusterTime: Timestamp({ t: 1719475282, i: 1 }),
    signature: {
      hash: Binary.createFromBase64('jXjZEjVC7wm8wCNuJVTSvGWZNO4=', 0),
      keyId: Long('7348787707444723714')
    }
  },
  operationTime: Timestamp({ t: 1719475282, i: 1 })
}
Get Collection Count

编写了如下Ansible Playbook尝试原样显示文件内容:

[wladmin@linuxhost ~]$ cat logformat.yml
---
- name: "Play 1"
  hosts: localhost

  gather_facts: no
  tasks:

    - name: Read Github logs
      raw: "cat clean.txt"
      register: file_contentone

    - debug:
        msg: "{{ file_contentone.stdout_lines }}"

但运行后输出中每行内容被自动添加了双引号,希望实现输出时每行不带双引号的效果。


解决方案

方法1:使用stdout代替stdout_lines

stdout_lines会把文件内容按行拆分成列表,debug模块输出列表时会给每个元素添加双引号。而stdout是完整的文本内容(包含换行符),直接输出即可还原原文件格式:

修改Playbook中的debug任务:

- debug:
    msg: "{{ file_contentone.stdout }}"

方法2:将stdout_lines合并为字符串

通过join过滤器把列表中的每行内容用换行符拼接成完整文本,也能避免列表格式带来的双引号:

- debug:
    msg: "{{ file_contentone.stdout_lines | join('\n') }}"

方法3:直接输出到终端(可选)

如果不需要通过debug模块输出,也可以用shell模块直接打印内容,完全还原原格式:

- name: Print file content directly
  shell: cat clean.txt

内容的提问来源于stack exchange,提问作者Ashar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:28:26