Linux区


Linux下用sed跨行非贪婪匹配含有特定字符的AAAAA到BBBBB多行文字并替换或删除之

Linux下如何用sed跨行非贪婪匹配含有特定字符的AAAAA到BBBBB多行文字并替换或删除之?

答案:

sed -e '/AAAAA/!b;:a;/BBBBB/bb;$!{N;ba};:b;s/AAAAA.*特定字符.*BBBBB/替换字符/'

sed语言大概是世界上最艰难的编程语言。小衲我时常用sed不止四五年了,笔记也记了上千行,但还是不怎么精通。什么暂存空间、hold space、pattern space一大堆拗口的概念,到如今仍是一头雾水,一看它就捉急。咱也不知道上面代码的运行原理,反正匹配的完全准确,以后可以直接拿来用就OK了。

有以下html源代码:

<table width="100%" height="22" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#C4DEE7">
<tr>
<td width="120" align="left">
<a href="/" target="_parent" class="a2">古今成语大全</a>
</td>
<td width="900" align="right" height="30">本站作品收集自网络</td>
</tr>
</table>
</div>
<table class="">
<tr>
</tr>
</table>
<table>
</table>
<table width="100%" height="22" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#C4DEE7">
<tr>
<td width="120" align="left">
<a href="/" target="_parent" class="a2">汉语成语大全</a>
</td>
<td width="900" align="right" height="30">本站作品收集整理自网络</td>
</tr>
</table>

用了sed -e '/<table/!b;:a;/<\/table>/bb;$!{N;ba};:b;s/<table.*C4DEE7.*\/table>/被替换内容/'之后,变成了下面我想要的内容,非常棒!

被替换内容
</div>
<table class="">
<tr>
</tr>
</table>
<table>
</table>
被替换内容

相关博文



1条评论

  1. 2021-5-7 16:11

    山东省济南市某Windows用户觉得这篇文章很有帮助。

发表评论

电子邮件地址不会被公开。