用第二个文件的全文替换一行

用第二个文件的全文替换一行

我知道如何使用诸如sed.但是有没有一种简单的方法,可以用第二个文件的全部内容替换文件中的一行?

那么,让我们举个例子。我有一个名为file1.txt

A 1
B 2
C 3

我有第二个文件file2.txt

line 1
line 2
line 3

现在,我想替换line 2为 的全部内容file1.txt,所以最后,它应该看起来像这样

line 1
A 1
B 2
C 3
line 3

我可以想到的一种方法是这样的:

sed -i "s/line 2/$(cat file1.txt)/g" file2.txt. 

但随后我还必须检查一些特殊字符,例如/甚至更多。我必须假设,每个可能的可读字符都可以在file1.txt.

那么,回到我的问题:有没有一种简单的方法可以用第二个文件的全部内容替换文件中的一行?不一定是这样sed。如果它能更好地完成工作,它也可能是另一种工具......

答案1

sed -e '/^line 2$/{r file1.txt' -e 'd;}' file2.txt

脚本sed

/^line 2$/{
    r file1.txt
    d
}

文件名后面的换行符file1.txt是强制性的,因此在命令行上将其拆分为单独的-e表达式可以使其更具可读性

sed '/^line 2$/{r file1.txt
d;}' file2.txt

该脚本查找内容为 的行line 2。当发现这一点时,file1.txt立即输出的内容并删除原来的行。

使用sed -i将使更改内联file2.txt(不推荐)。

答案2

使用 vi

转到该行,然后:

!!cat filename

当前行替换为文件内容。

相关内容