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

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

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

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

第二个文件如下所示:

A B C D E F G  

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

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

或者

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

我尝试过的:

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 

执行这些命令后,第二个文件的内容被放在第一个文件的末尾,而不是我想要的位置。

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

答案1

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

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

解释

  • 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>');

相关内容