Como inserir o conteúdo de um arquivo em um local exato em outro arquivo

3

Eu tenho dois arquivos. O primeiro contém código html:

document.body.innerHTML = document.body.innerHTML.replace('<textarea rows="3"></textarea>', '<textarea rows="3"> inserthere </textarea>');  

O segundo arquivo é assim:

A B C D E F G  

Eu preciso colocar o conteúdo do segundo arquivo no código html, em que inserthere é. Então, a saída que eu quero:

document.body.innerHTML = document.body.innerHTML.replace('<textarea rows="3"></textarea>', '<textarea rows="3"> A B C D E F G </textarea>');  

ou

document.body.innerHTML = document.body.innerHTML.replace('<textarea rows="3"></textarea>', '<textarea rows="3"> A B C D E F Ginserthere </textarea>');  

O que eu tentei:

sed  -e '/inserthere/r file2' -e 'x;$G' file1 > file3 

sed -n -i -e '/inserthere/r file2' -e 1x -e '2,${x;p}' -e '${x;p}' file1  

f2="$(<file2)"
awk -vf2="$f2" '/inserthere/{print f2;print;next}1' file1 

Após esses comandos, o conteúdo do segundo arquivo foi colocado no final do primeiro arquivo, em vez do lugar que eu queria.

Existe alguma outra maneira de alcançar o resultado desejado?

    
por PKM 13.08.2016 / 19:02

1 resposta

5

Eu não acho que você possa obter o comando r em sed para substituir o texto no meio de uma linha. Você pode usar sed s para substituir inserthere pelo conteúdo de file2 de uma maneira deselegante:

sed "s/inserthere/$(cat file2)/" file1 > file3

Explicação :

  • s replace: /old/new/
  • $(cat file2) passa a saída de cat file2 para sed s (substituição de comando)
  • use aspas duplas para permitir $ expansion

file3 :

document.body.innerHTML = document.body.innerHTML.replace('<textarea rows="3"></textarea>', '<textarea rows="3"> A B C D E F G </textarea>');
    
por Zanna 13.08.2016 / 19:57