如何使用 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
投票

BEGINFILE
ENDFILE
gensub()
使用 GNU awk 以及支持
bash
大括号扩展表示法的 shell,例如
{1..10}

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