将多个文件附加到单个输出文件,但在文件之间带有消息



我想将多个名为 lab_X.txt 的文件附加到一个输出文件 final.txt。知道一个文件夹中的所有文件都是我需要的文件,我将它们移动到当前目录中并使用cat *.txt > final.txt,知道>覆盖文件。我想在文件之间插入一条类似于=============的简单消息,这可能吗?

假设你有 Gnu awk:

awk 'BEGINFILE{print "============="}1' lab*.txt > final.txt

BEGINFILE特殊模式(gawk 扩展名(在每个文件的第一行之前触发。它定义变量FILENAME以防您希望在分隔符行中包含名称。

最后的1是一种始终正确的模式。由于它没有操作,因此将执行默认操作,这将打印该行。

这也将在开头打印该行。如果你真的不想这样,你可以添加一个检查:

awk 'BEGINFILE{if(nfiles++)print "============="}1' lab*.txt > final.txt

nfiles没有什么特别的.像任何其他 awk 变量一样,它有效地初始化为 0,后缀++递增它,但仅在返回其值之后。

with gnu sed

sed -ns '1s/.*/=============n&/;w final.txt' lab*.txt
'

-s' '--separ'
默认情况下,'sed' 将考虑命令中指定的文件 线作为单个连续的长流。 这个 GNU 'sed' 扩展 允许用户将它们视为单独的文件:范围地址 (如'/abc/,/def/'(不允许跨越多个文件,行 数字相对于每个文件的开头,"$"表示 每个文件的最后一行,从"R"命令调用的文件是 在每个文件的开头倒带。

最新更新