我有 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
或任何其他可行的方法来实现上述目标。
对
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