ファイル 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) に応じて、2 つまたは 3 つの値を抽出する必要があります。
答え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
注意: 出力をファイル2にしたい場合は
sed -i "8s/1.0000/$i/g" file2