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