我想将多个名为lab_X.txt的文件附加到一个输出文件final.txt中。知道一个文件夹中的所有文件都是我需要的文件后,我将它们移到当前目录并使用了cat *.txt > final.txt,因为知道会>覆盖该文件。我想在类似于的文件之间插入一条简单消息=============,可能吗?
2 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
假设您有Gnu awk:
awk 'BEGINFILE{print "============="}1' lab*.txt > final.txt
的BEGINFILE
特殊图案(徒劳无功扩展)只是每个文件的第一行之前触发。FILENAME
如果您想在分隔线中包含名称,它会定义变量。
将1
在年底是这始终是真正的模式。由于没有动作,因此将执行默认动作,该动作将打印该行。
这也将在开始时打印该行。如果您确实不希望这样做,可以添加一张支票:
awk 'BEGINFILE{if(nfiles++)print "============="}1' lab*.txt > final.txt
没有什么特别的nfiles
。与其他任何awk变量一样,该变量实际上被初始化为0,并且后缀将其++
递增,但仅在返回其值之后。
叮当猫咪
TA贡献1776条经验 获得超12个赞
与gnu sed
sed -ns '1s/.*/=============\n&/;w final.txt' lab*.txt
'-s''--separate'
默认情况下,'sed'会将命令行上指定的文件视为单个连续的长流。此GNU'sed'扩展名允许用户将它们视为单独的文件:范围地址(例如'/ abc /,/ def /')不允许跨越多个文件,行号相对于每个文件的开头, '$'指每个文件的最后一行,并且从'R'命令调用的文件会在每个文件的开头重新缠绕。
- 2 回答
- 0 关注
- 252 浏览
添加回答
举报
0/150
提交
取消