我想從文件 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 行的內容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