extrair valores de um arquivo e colocá-los em uma linha específica de outro arquivo

extrair valores de um arquivo e colocá-los em uma linha específica de outro arquivo

Quero pegar o valor 0.98728E-02 do arquivo 1 que está na linha 2 e colocar no lugar o valor 1.000 do arquivo 2 que está na linha 8. Como fazer a substituição do arquivo 1 pelo arquivo 2?

Meu arquivo 1:

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

Preciso pegar os valores "0.98728E-02" e colocar line no lugar do "1.0000" do arquivo 2

Meu arquivo 2:

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

Comecei a fazer na linguagem "sed", mas não sei mais o que fazer...

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

Arquivo final que quero ter.

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

PS: Você não possui palavras-chave constantes antes ou depois das linhas. PS: Dependendo do arquivo de saída (Arquivo 1), precisarei extrair dois ou três valores.

Responder1

Tenho certeza de que é possível sed, mas você poderia facilmente fazer isso com awk:

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

Responder2

Substitua a linha 8 file2pelo conteúdo da linha 2 file1por sed:

Isso muda file2de lugar

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

ou o mesmo que acima, mas escreva as alterações emfile2.new

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

Responder3

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

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

saída

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

Nota: se você quiser a saída deve estar no arquivo2

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

informação relacionada