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

时间:2018-05-05 23:28:47

标签: linux bash shell append cat

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

2 个答案:

答案 0 :(得分:1)

假设你有Gnu awk:

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

BEGINFILE special pattern(gawk扩展名)在每个文件的第一行之前触发。如果要在分隔行中包含名称,它会定义变量FILENAME

最后的1是一种始终为真的模式。由于它没有动作,因此执行默认动作,打印该行。

这也将在开头打印该行。如果你真的不想那样,你可以添加一张支票:

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

nfiles没有什么特别之处。像任何其他awk变量一样,它实际上被初始化为0,后缀++会增加它,但只有在返回它的值之后才会增加它。

答案 1 :(得分:1)

使用gnu sed

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

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