извлечь значения из файла и поместить эти значения в определенную строку из другого файла

извлечь значения из файла и поместить эти значения в определенную строку из другого файла

Я хочу получить значение 0,98728E-02 из файла 1, который находится в строке 2, и подставить на его место значение 1000 из файла 2, которое находится в строке 8. Как выполнить замену файла 1 на файл 2?

Мой файл 1:

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

Мне нужно получить значения «0.98728E-02» и вставить их в строку вместо «1.0000» файла 2

Мой файл 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

Связанный контент