文件a.html:
<!--TEMPLATE: banner-->
blahblah
<!--TEMPLATE-END: banner-->
Run Code Online (Sandbox Code Playgroud)
我想将中间文本替换为其他文本,如何使用sed/awk /其他工具实现?
如果标记行之间的文本由一行或多行组成:
sed '/<!--TEMPLATE: banner-->/,/<!--TEMPLATE-END: banner-->/ {//!d}; /<!--TEMPLATE: banner-->/aSome text to insert' a.html
Run Code Online (Sandbox Code Playgroud)
该i命令可以改变一个r命令和文件名从文件中读取文本。
sed '/<!--TEMPLATE: banner-->/,/<!--TEMPLATE-END: banner-->/ {//!d}; /<!--TEMPLATE: banner-->/r filename' a.html
Run Code Online (Sandbox Code Playgroud)
如果您在另一个文件中有新的横幅文本:
awk -v new_file=new_banner.txt '
/!--TEMPLATE:/ {print; system("cat " new_file); banner=1; next}
/!--TEMPLATE-END:/ {banner=0}
banner {next}
{print}
' a.html
Run Code Online (Sandbox Code Playgroud)