如果您只需要匹配完整的行,则可以使用来完成此任务
awk。就像是:
awk -v NEWTEXT=foo 'BEGIN{n=0} /COMMENT_BEGIN/ {n=1} {if (n==0) {print $0}} /COMMENT_END/ {print NEWTEXT; n=0}' < myfile.txt如果文件格式不正确,并且注释与要保留或删除的文本在同一行,那么我将使用
perl,将整个文件读入单个字符串,进行正则表达式匹配并替换该字符串,然后将新字符串写入新文件。这不是那么简单,您需要编写
perl脚本来完成工作。就像是:
#!/usr/bin/perl$newtext = "foonbar";$/ = ''; # no input separator so whole file is read.$s = <>; # read whole file from stdin$startPattern = quotemeta('<!--WIERD_SPECIAL_COMMENT_BEGIN-->');$endPattern = quotemeta('<!--WIERD_SPECIAL_COMMENT_END-->');$pattern = $startPattern . '.+' . $endPattern;$s =~ s/$pattern/$newtext/sg;print $s;


