我想从文件 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 行的内容file1
:sed
这个改变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