写入csv文件

写入csv文件,csv,ansible,Csv,Ansible,我需要一些内容以csv格式写入一个文件使用ansible shell: ps -ef | grep java | awk '{print $1}' register: username shell: ps -ef | grep java | awk '{print $2}' register: id 用户名的输出类似于: root admin test_admin id的输出类似于: 1232 4343 2233 所以我想把它作为一个csv文件写入 root,1232 admin,434

我需要一些内容以csv格式写入一个文件使用ansible

shell: ps -ef | grep java | awk '{print $1}'
register: username

shell: ps -ef | grep java | awk '{print $2}'
register: id
用户名的输出类似于:

root
admin
test_admin
id的输出类似于:

1232
4343
2233
所以我想把它作为一个csv文件写入

root,1232
admin,4343
test_admin,2233

请建议。

您可以使用zip、map和join筛选器的组合来实现所需的结果:

- hosts: all
  tasks:
    - name: combination of two lists
      set_fact:
        lines: "{{ [1,2,3]|zip(['a','b','c'])|list }}"
    - debug:
        msg: "{{ lines }}"
    - name: transform each line into a string
      set_fact:
        lines: "{{ lines | map('join', ', ') | list }}"
    - debug:
        msg: "{{ lines }}"
    - name: combine lines
      set_fact:
        lines: "{{ lines | join('\n') }}"
    - debug:
        msg: "{{ lines }}"
    - name: write lines to file
      copy:
        content: "{{ lines }}"
        dest: "output.csv"
或者将过滤器组合在一起时:

- name: write lines to file
  copy:
    content: "{{ [1,2,3] | zip(['a','b','c']) | map('join', ', ')  | join('\n') }}"
    dest: "output.csv"
output.csv的内容将是:

1, a
2, b
3, c

++感谢大家分享我的代码,你能给我解释一下吗;由于我是Ansible的新手,干杯。我可以向您指出过滤器的文档:。如果你运行第一个剧本,它会打印出我在每个步骤中所做的事情。其中一个步骤不清楚吗?谢谢,这对两个列表行有效:{{tmp.stdout_行{zip tech.stdout_行{124; list}}对三个列表行无效:{{{tmp.stdout_行{zip tech.stdout_行}zip app.stdout_行{list}你能告诉我需要更改什么吗?应该更改{{tmp.stdout_line | zip tech.stdout_line,app.stdout_line | list}