Answers:
head
和tail
解决方案假设调用了源文件,并调用~/a
了要插入的文件~/b
。我们将合并后的文件放入~/c
:
head -n 5 ~/a > ~/c
cat ~/b >> ~/c
tail --lines=+6 ~/a >> ~/c
~/
是您的/home/user
目录名称的简写形式a
到新创建的文件中c
b
并将其附加到文件c
a
从第6行开始附加文件,直到文件结尾c
确认文件c
已从文件中正确合并后a
,b
我们将重命名c
为a
使用:
mv ~/c ~/a
mv
将文件移动c
到文件中a
。数据不会物理移动。只需将文件重命名即可节省时间。这里最简单的工具可能是sed
。要插入b.txt
到a.txt
5日线后,你可以写:
sed '5r b.txt' a.txt
sed
逐行读取指定为参数(a.txt
)的文件。除非它们被命令更改,否则所有行都会在输出中被复制,就像它们出现在输入中一样。
的5
是在其将被执行如下命令的地址(行号)。我们使用的命令是r
,它以文件名作为参数(在此处b.txt
),将其完全读取并将其插入到当前行之后的输出中。
如上所示,此sed
命令行将仅将输出打印到终端,而不会写入任何文件。您可以使用Bash的输出重定向将其重定向到一个新文件(不是任何输入文件!):
sed '5r b.txt' a.txt > c.txt
或者,您可以a.txt
使用sed
的s -i
(用于“就地”)开关直接修改外部输入文件。如果将其写为-i.bak
,它将首先备份带有后缀的原始输入文件.bak
:
sed -i '5r b.txt' a.txt
一个例子:
$ cat a.txt
January
February
March
April
May
October
November
December
$ cat b.txt
June
July
August
September
$ sed '5r b.txt' a.txt
January
February
March
April
May
June
July
August
September
October
November
December
(重用@ByteCommander中的优美示例:)
awk '1; NR==5 {system("cat b.txt")}' a.txt