我想用另一个文件(文件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行到第n行的输入数据(文件1)。我尝试如下使用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)?
谢谢。
答案 0 :(得分:0)
将一个文件中的特定行从10到18替换为文件2中包含的数据
让我们使用动态编程并将“替换”分为“删除”和“插入”。
在10到18个文件中[删除]特定行
这很简单:
sed '10,18d'
会删除10到18行。
[插入]文件2中包含的数据[到第10行]
这也很容易:
sed '9r file2'
它将文件2的内容追加到第9行之后,因此文件2的第一行是新行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