写入csv文件
我需要一些内容以csv格式写入一个文件使用ansible写入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
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}