如何使用ansible blockinfile或任何其他方法将多个文件的内容插入到单个文件中

问题描述 投票:0回答:1

我有 10 个文件,我希望将这些内容复制到一个文件中。

10个文件的内容应分别用文件名分隔(类似于

blockinfile
中的标题)。

示例

$ cat /tmp/file1.txt # -> This is first file
$ cat /tmp/file2.txt # -> This is second file

预期结果来自

cat /tmp/merged_file

ANSIBLE MANAGED BLOCK file1.txt
This is first file
ANSIBLE MANAGED BLOCK file1.txt
ANSIBLE MANAGED BLOCK file2.txt
This is second file
ANSIBLE MANAGED BLOCK file2.txt

如果只有1个文件,可以通过blockinfile来实现。想知道上述是否可以通过

blockinfile
,或者任何其他可行的方法来实现。

谢谢。

ansible
1个回答
0
投票

使用 GNU awk 作为 BEGINFILE 和 ENDFILE(未经测试,因为没有提供示例输入):

awk '
    BEGIN { base = "ANSIBLE MANAGED BLOCK " }
    BEGINFILE { str = base gensub(".*/","",1,FILENAME); print str }
    { print }
    ENDFILE { print str }
' /tmp/file{1..10}.txt
© www.soinside.com 2019 - 2024. All rights reserved.