我在/ tmp / test文件夹中有4个文件,分别是serverA.csv(1,2,3),serverB.csv(4、5、6),serverC.csv(7、8、9),serverD。 csv(10,11,12)。 我已经使用汇编模块合并了所有这些文件。
- name: assemble files
assemble:
src: /tmp/test/
dest: /tmp/logrotate/test.csv
现在文件已合并,新文件test.csv具有合并的内容。
1,2,3
4,5,6
7,8,9
10,11,12
我需要的是,我需要在服务器名称的开头添加一列。名称出现在文件名中。 预期的输出。
serverA,1,2,3
serverB,4,5,6
serverC,7,8,9
serverD,10,11,12
任何人都可以提供任何建议吗?
答案 0 :(得分:1)
如果文件在ansible系统本地,则可以在assemble files
之前使用其他任务。
- name: prepend filename in every line
replace:
path: '{{ item }}'
regexp: '^(.+)$'
replace: '{{ item | basename | regex_replace("\.csv") }},\1'
with_fileglob:
- '/tmp/test/*'
当文件位于远程系统上时,在执行任务之前必须使用find
而不是with_fileglob
。
- name: find files
find:
path: '/tmp/test'
register: result
- name: prepend filename in every line
replace:
path: '{{ item.path }}'
regexp: '^(.+)$'
replace: '{{ item.path | basename | regex_replace("\.csv") }},\1'
loop: '{{ result.files }}'