從文件中提取值並將這些值放在另一個文件中的特定行上

從文件中提取值並將這些值放在另一個文件中的特定行上

我想從文件 1 第 2 行取得值 0.98728E-02,並將文件 2 第 8 行的值 1,000 放入到位。

我的文件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

相關內容