Linux 用另一个文件中包含的数据替换一个文件中的特定行

Linux 用另一个文件中包含的数据替换一个文件中的特定行,linux,awk,sed,Linux,Awk,Sed,我想用另一个文件2中包含的数据替换一个文件1中的特定行。例如: 文件1输入代码: other lines... 11 !!! Regular Expression 10 0.685682*100 11 0.004910*100 12 0.007012*100 13 0.146041*100 14 0.067827*100 15 0.019460*100 16 0.019277*100 17 0.001841*100 18 0.047950*100 other lines.

我想用另一个文件2中包含的数据替换一个文件1中的特定行。例如: 文件1输入代码:

 other lines...
 11 !!! Regular Expression
 10 0.685682*100
 11 0.004910*100
 12 0.007012*100
 13 0.146041*100
 14 0.067827*100
 15 0.019460*100
 16 0.019277*100
 17 0.001841*100
 18 0.047950*100
 other lines...
文件2添加新数据:

 1 0.36600*100
 2 0.44466*100
 3 0.0.046*100
 4 0.15544*100
 5 0.16600*100
 6 0.14477*100
 7 0.01927*100
 8 0.00188*100
 9 0.05566*100
如何用文件2数据中包含的数据替换输入数据文件1从第1行到第n行。我尝试使用sed如下:

sed '/!!! Regular Expresion/r File2' File1
我得到以下信息:

 1 !!! Regular Expression
 2 0.36600*100
 3 0.44466*100
 4 0.0.046*100
 5 0.15544*100
 6 0.16600*100
 7 0.14477*100
 8 0.01927*100
 9 0.00188*100
 10 0.05566*100
 11 0.685682*100
 12 0.004910*100
 13 0.007012*100
 14 0.146041*100
 15 0.067827*100
 16 0.019460*100
 17 0.019277*100
 19 0.001841*100
 20 0.047950*100
我的问题是,这个命令可以插入文件2中包含的行,但不能替换它们。如何用新数据仅替换10到18之间的这些行

提前谢谢

用文件2中包含的数据替换一个文件中从10到18的特定行

让我们使用动态规划并将替换拆分为删除和插入

[删除]从10到18的一个文件中的特定行

这很简单:

sed '10,18d'
将从10行删除到18行

[插入]文件2中包含的数据[至第10行]

这也很简单:

sed '9r file2'
它在第9行之后追加file2的内容,因此file2的第一行是新行10

总而言之:

sed '10,18d; 9r file2'
例如:

# seq 8 | sed '3,6d; 2r '<(seq -f 2%.0f 5)
1
2
21
22
23
24
25
7
8

因此,我们鼓励用户添加他们为解决自身问题所做的努力,请在您的帖子中添加您的努力,然后让我们知道。请@Yro,查看。您应该添加一个您尝试的可验证示例。如果没有,它将被标记为非主题。阅读->问题的第3点要求家庭作业帮助必须包括到目前为止你为解决问题所做工作的总结,以及对你解决问题的困难的描述。请帮助我们帮助您。您只是想替换第二列中的数据,还是想完全替换第1到N行?如果后者:{cat file2;sed-e1,${N}d file2;}>输出