如何将一个文件的内容插入到另一个文件中的确切位置

PKM*_*PKM 4 command-line text-processing

我有两个文件。第一个包含 html 代码:

document.body.innerHTML = document.body.innerHTML.replace('<textarea rows="3"></textarea>', '<textarea rows="3"> inserthere </textarea>');  
Run Code Online (Sandbox Code Playgroud)

第二个文件看起来像这样:

A B C D E F G  
Run Code Online (Sandbox Code Playgroud)

我需要将第二个文件的内容放入html代码中inserthere。所以,我想要的输出:

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

或者

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

我试过的:

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 
Run Code Online (Sandbox Code Playgroud)

在这些命令之后,第二个文件的内容被放在第一个文件的末尾而不是我想要的地方。

有没有其他方法可以实现我想要的输出?

Zan*_*nna 6

我认为您无法使用r命令sed来替换行中间的文本。您可以使用sed s以不雅的方式替换inserthere为的内容file2

sed "s/inserthere/$(cat file2)/" file1 > file3
Run Code Online (Sandbox Code Playgroud)

说明

  • s 代替: /old/new/
  • $(cat file2)将输出传递cat file2sed s(命令替换)
  • 使用双引号允许$扩展

文件3

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