从文件中提取值并将这些值放在另一个文件中的特定行上

从文件中提取值并将这些值放在另一个文件中的特定行上

我想从文件 1 第 2 行获取值 0.98728E-02,并放入文件 2 第 8 行的值 1,000。如何用文件 1 替换文件 2?

我的文件1:

Genetic variance(s) for effect  2       
0.98728E-02
Genetic variance(s) for effect  3       
0.56818E-02

我需要获取值“0.98728E-02”并放在行中代替文件 2 的“1.0000”

我的文件2:

DATAFILE 
renf90.dat 
NUMBER_OF_TRAITS 
1 
NUMBER_OF_EFFECTS 
9 
RANDOM_RESIDUAL VALUES 
1.0000
RANDOM_GROUP 
2

我开始用“sed”语言来做,但我不知道还能做什么......

sed '23s/1.0000/  .....

我想要的最终文件。

DATAFILE 
renf90.dat 
NUMBER_OF_TRAITS 
1 
NUMBER_OF_EFFECTS 
9 
RANDOM_RESIDUAL VALUES 
0.98728E-02
RANDOM_GROUP 
2

PS:行前或行后没有任何常量关键字。 PS:根据输出文件(文件 1),我需要提取两个或三个值。

答案1

我确信可以使用sed,但您可以轻松地使用awk

awk 'NR==2 { value=$1 }
     FILENAME=="file2" { if (FNR==8) print value; else print }
' file1 file2 > output_file

答案2

将第 8 行替换为file2第 2 行的内容file1sed

这个改变file2的地方

sed -i'' '8s/.*/'"$(sed -n '2p' file1)"'/' file2

或与上面相同,但将更改写入file2.new

sed '8s/.*/'"$(sed -n '2p' file1)"'/' file2 > file2.new

答案3

i=`sed -n '2p' file1`

sed  "8s/1.0000/$i/g" file2

输出

DATAFILE 
renf90.dat 
NUMBER_OF_TRAITS 
1 
NUMBER_OF_EFFECTS 
9 
RANDOM_RESIDUAL VALUES 
0.98728E-02
RANDOM_GROUP 
2

注意:如果你想要输出应该在file2中

sed -i   "8s/1.0000/$i/g" file2

相关内容