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> 被替换内容
山东省济南市某Windows用户觉得这篇文章很有帮助。