extraer valores de un archivo y colocar esos valores en una línea particular de otro archivo

extraer valores de un archivo y colocar esos valores en una línea particular de otro archivo

Quiero obtener el valor 0.98728E-02 del archivo 1 que está en la línea 2 y colocar el valor de 1000 del archivo 2 que está en la línea 8. ¿Cómo sustituir el archivo 1 por el archivo 2?

Mi archivo 1:

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

Necesito obtener los valores "0.98728E-02" y ponerlos en línea en lugar del "1.0000" del archivo 2.

Mi archivo 2:

DATAFILE 
renf90.dat 
NUMBER_OF_TRAITS 
1 
NUMBER_OF_EFFECTS 
9 
RANDOM_RESIDUAL VALUES 
1.0000
RANDOM_GROUP 
2

Empecé a hacerlo en lenguaje "sed", pero ya no sé que más hacer...

sed '23s/1.0000/  .....

Archivo final que quiero tener.

DATAFILE 
renf90.dat 
NUMBER_OF_TRAITS 
1 
NUMBER_OF_EFFECTS 
9 
RANDOM_RESIDUAL VALUES 
0.98728E-02
RANDOM_GROUP 
2

PD: No tienes palabras clave constantes antes o después de las líneas. PD: Dependiendo del archivo de salida (Archivo 1), necesitaré extraer dos o tres valores.

Respuesta1

Estoy seguro de que es posible con sed, pero puedes hacerlo fácilmente con awk:

awk 'NR==2 { value=$1 }
     FILENAME=="file2" { if (FNR==8) print value; else print }
' file1 file2 > output_file

Respuesta2

Reemplace la línea 8 de file2con el contenido de la línea 2 de file1con sed:

Esto cambia file2en su lugar

sed -i'' '8s/.*/'"$(sed -n '2p' file1)"'/' file2

o lo mismo que arriba, pero escriba los cambios enfile2.new

sed '8s/.*/'"$(sed -n '2p' file1)"'/' file2 > file2.new

Respuesta3

i=`sed -n '2p' file1`

sed  "8s/1.0000/$i/g" file2

producción

DATAFILE 
renf90.dat 
NUMBER_OF_TRAITS 
1 
NUMBER_OF_EFFECTS 
9 
RANDOM_RESIDUAL VALUES 
0.98728E-02
RANDOM_GROUP 
2

Nota: si desea que la salida esté en el archivo 2

sed -i   "8s/1.0000/$i/g" file2

información relacionada