我正在尝试替换:
<td id="logo_divider"><a href="http://www.the-site.com"><img src=
"/ART/logo.140.gif" width="140" height="84" alt="logo" border=
"0" id="logo" name="logo" /></a></td>
和:
<td id="logo_divider"><span itemscope itemtype="http://schema.org/Organization"><a itemprop="url" href="http://www.the-site.com"><img itemprop="logo" src=
"/ART/logo.140.gif" width="140" height="84" alt="logo" border=
"0" id="logo" name="logo" /></a></span></td>
我写的 sed 命令:
sed -E s#\(\<td id=\"logo_divider\"\>\)\(\<a \)\(href=\"http://www\.the-site\.com\"\>\<img \)\(src=\n\"/ART/logo\.140\.gif\".*?\n.*?\>\)#\1\<span itemscope itemtype=\"http://schema\.org/Organization\"\>\2itemprop=\"url\"\3itemprop=\"logo\"\4\</span\>\5#g default.ctp
有两个问题。第一个是命令失败:
sed: 1: "s#(<td": unterminated substitute pattern
第二个是,即使要成功,匹配也需要对换行符具有鲁棒性。更强大的解决方案将首先删除以下之间的任何换行符:
<td id="logo_divider">
和:
</td>
然后对清理的文件执行替换。就像是:
sed -E s#\n##g | ...