我有一个带有html内容的.sql转储。我想从<img...>
字符串中删除title =“....”。
棘手的部分是这些title =“.....”als出现在一行的<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> </p><h1>Title of page</h1>
答案 0 :(得分:0)
我认为你想要的是一个非贪婪的正则表达式,这是一种不支持的东西。但是,this question提供了一种潜在的解决方案。我没有对此进行过测试,但也许以下几行有助于:
perl -pe 's|<img(.*?)title=".*?"(.*?)>|<img\1\2>|g'
我现在很早,但其中的要点是“找到img标签,捕获所有不属于title属性的内容,并在最后替换它。
答案 1 :(得分:0)
我确定我的问题是否正确......但我认为你需要反向引用,尝试这样的事情:
sed 's/\(A\) B \(C\)/\1 \2/g'
结果:
A C D B C A C
Y B C D B C Y B C