0

我有一个 .sql 转储,其中包含 html 内容。我想从<img...>字符串中删除一个 title="...."。棘手的部分是这些 title="....." 也出现在<href.....>一行的一部分中。

为了使其更明显,我在 2 行文件中使用以下字符串:

A B C D B C A B C
Y B C D B C Y B C

B代表title="...."部分并且 A....C<img....>部分

生成的文件应如下所示

A C D B C A C
Y B C D B C Y B C

只有B应该在内部删除A...C,第二行应该保持不变

我使用 sed 是因为我最了解这一点,但如果有人知道更好的方法,我很想知道。

到目前为止,我已经使用了以下命令

cat file |sed '/A/ s/B/X/g'

问题是它也取代了B内部D...C

A C D C A C
Y B C D B C Y B C

任何想法都会被应用。

问候,

阿让

PS:现实生活中的例子,只有一行:

nbsp;</p><p> <img src="images/vlaggen/dene_vlag.png" border="0" alt="Vlag van Denemarken" title="REMOVE THIS TITLE" width="75" height="50" align="left" />  <a href="images/hov.png" target="_blank" title="DONT REMOVE THIS TITLE"><img src="images/small.png" border="0" alt="Kaart van Denemarken" title="REMOVE THIS TITLE" align="right" /></a>   <br /><br /> </p><p>&nbsp;</p><h1>Title of page</h1>
4

2 回答 2

0

我认为您在这里想要的是一个非贪婪的正则表达式,这是 sed 不支持的。然而,这个问题提供了一个潜在的解决方案。我没有对此进行测试,但也许以下内容会有所帮助:

perl -pe 's|<img(.*?)title=".*?"(.*?)>|<img\1\2>|g'

我现在还早,但其要点是“找到 img 标签,捕获所有不是标题属性的内容,并在最后替换它。

于 2013-09-23T07:07:58.963 回答
0

我确定我的问题是否正确......但我认为你需要反向引用,尝试这样的事情:

sed 's/\(A\) B \(C\)/\1 \2/g'

结果:

中华民国

YBCDBCYBC

于 2013-09-23T07:09:19.753 回答