如何删除和转换选择性HTML标记?

k0pti3hp  于 2022-12-21  发布在  其他
关注(0)|答案(4)|浏览(117)

我有一个csv文件的格式:

270291014011    ED HARDY - TRUE TO MY LOVE - Cap NEU 2008 NEU       0,00 €  0,00 €  0   1   0   22.10.2008 03:37:10 21.11.2008 02:37:10 21.11.2008 02:42:10 50  0   0   0   39,99 € http://i7.ebayimg.com/02/i/001/16/0d/68af_1.JPG?set_id=800005007    0   2   8.10.2008 13:40:20  8.10.2008 13:40:20  80587   0   <table bordercolordark="#999900" bordercolorlight="#666666" bgcolor="#ffffff" border="10" bordercolor="#666666" width="100%">
<tbody>
<tr>
<td><b><font color="#990000" face="arial" size="5"><br>
</font></b><blockquote>
<div align="center"><b><font color="#990000" face="arial" size="5"><font color="#ff0000">

</font></font></b><h1><font size="6"><b><font color="#990000" face="arial"><font color="#ff0000">100% ORGINAL MARKENWARE AUS DEN USA</font></font></b></font></h1>
<p style="color: rgb(0, 0, 0);"><font size="6"><b><font face="arial">ED HARDY</font></b></font></p><p style="color: rgb(0, 0, 0);"><b><font face="arial" size="5">CAP<br></font></b></p></div><div style="text-align: center;"><font size="5"><br><b><font color="#990000" face="arial"><font color="#ff0000"><b><font color="black" face="arial">Style: TRUE ROSE<br></font></b></font></font></b><b><font color="#990000" face="arial"><font color="#ff0000"><b><font color="black" face="arial"><br></font></b></font></font></b></font><font size="5"><b><font color="#990000" face="arial"><font color="#ff0000"><b><font color="black" face="arial">Die Kollektion von der trend Marke Ed Hardy kreiert sportlich, hipe Mode die bei den Stars in Hollywood der absolute Renner ist. In diesem super Trucker Cap fallen Sie auf !!&nbsp; </font></b></font></font></b></font><font size="5"><b><font color="#990000" face="arial"><font color="#ff0000"><b><font color="black" face="arial">Dieses Cap ist nagelneu mit Etikett und</font></b></font></font></b></font><font size="5"><b><font color="#990000" face="arial"><font color="#ff0000"><b><font color="black" face="arial"> 100% orginal.</font></b></font></font></b></font><font size="5"><br><b><font color="#990000" face="arial"><font color="#ff0000"><b><font color="black" face="arial"><br><br></font></b></font></font></b><br><b><font color="#990000" face="arial"><font color="#ff0000"><b><font color="black" face="arial">Wir tragen die ebay Kosten und der Kaeufer die Versandkosten.</font></b></font></font></b><br><b><font color="#990000" face="arial"><font color="#ff0000"><b><font color="black" face="arial">Versandkosten nach Europa sind folgend:</font></b></font></font></b><br><b><font color="#990000" face="arial"><font color="#ff0000"><b><font color="black" face="arial">fuer unversicherten Versand 6,00 Euro<br></font></b></font></font></b></font><font size="5"><b><font color="#990000" face="arial"><font color="#ff0000"><b><font color="black" face="arial">fuer versicherten Versand 12,00 Euro</font></b></font></font></b></font><br>
<font size="5"><span style="font-family: arial;"><span style="font-weight: bold;">Bei paypal Bezahlungen akzeptieren wir nur noch versicherten Versand!</span></span></font><br><font size="5"><b><font color="#990000" face="arial"><font color="#ff0000"><b><font color="black" face="arial">Auf Ihren Wunsch versenden wir die Ware auch versichert. Ansonsten trägt das Risiko beim Versand der Käufer. </font></b></font></font></b><br><b><font color="#990000" face="arial"><font color="#ff0000"><b><font color="black" face="arial">Wir bitten um Ihre Zahlung innerhalb 10 Tage nach Auktionsende.</font></b></font></font></b><br></font></div><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><b><font color="black" face="arial" size="3"><br>
</font></b></font></font></b><div align="center"><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><b><font color="black" face="arial" size="3"><font color="#ff0000">
</font></font></b></font></font></b><marquee width="70%" bgcolor="#ffffff">
<h2><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><b><font color="black" face="arial" size="3"><font color="#ff0000">Schauen Sie unbedingt bei unserem Shop "cheap-and-hip" vorbei!!!</font></font></b></font></font></b></h2></marquee><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><br><b><font color="black" face="arial" size="5"><br>
</font></b></font></font></font></b><blockquote>
<div align="center">
<center>
<h1><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><b><font color="black" face="arial" size="5">Abwicklung Ihres Einkaufs bei uns</font></b></font></font></font></b></h1><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><b><font color="black" face="arial" size="5"><br></font></b></font></font></font></b></center><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><br></font></font></font></b></div><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3">Jeder Käufer erhält innerhalb von 24 Stunden nach Auktionsende eine e-mail mit allen für die Kaufabwicklung relevanten Informationen. Sollten Sie nach 24 Stunden noch keine e-mail erhalten haben, setzen Sie sich bitte mit uns per e-mail in Verbindung. <br><br>
</font></font></font></font></b><h2><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3">Kauf von mehreren Artikeln</font></font></font></font></b></h2><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3">Da das Porto aus den USA nach Gewicht berechnet wird, werden die Versandkosten beim Einkauf von mehreren Artikeln neu berechnet. Bitte teilen Sie uns per e-mail mit, wenn Sie mehrere Artikel ersteigert/gekauft haben, bzw. noch ersteigern/kaufen moechten, Sie erhalten von uns dann die kompletten Versandkosten. Die Kosten fuer den Versand werden von dem Kaeufer getragen. Die Versanddauer betraegt bei Luftversand zirka 5-10 Tage.<br><br>
</font></font></font></font></b><h2><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3">Versand</font></font></font></font></b></h2><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3">Der Versand erfolgt innerhalb von 2-3 Werktagen nach Zahlungseingang (Gutschrift der Überweisung auf unserem Konto bei der Postbank oder bei paypal). Bitte beachten Sie, dass es je nach Kreditinstitut 2-4 Werktage dauern kann, bis Ihre Überweisung auf unserem Konto gutgeschrieben wird. Kreditkarten Gutbuchung ueber paypal erfolgt noch am gleichen Tag.<br>Als Betreff einer Ueberweisung muß unbedingt die eBay-Artikelnummer der Auktion angegeben werden. Ohne diese Information ist eine Zuordnung der Überweisung leider fast nicht möglich! <br>ZOLL: Bitte beachten Sie das Zollgebuehren anfallen koennen auch wenn es nur selten vorkommt sollten Sie sich mit den Einfuhrbestimmungen Ihres Landes vertraut machen. <br></font></font></font></font></b><br><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3"><br>
</font></font></font></font></b><h2><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3">Umtausch</font></font></font></font></b></h2><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3">Wir tauschen gerne Ihren Artikel um sofern Sie die Ware innerhalb von 14 Tagen nach erhalt den Artikel uns wieder zuschicken. Wir nehmen nur ungetragene Ware zurueck und alle Etiketten muessen noch an dem Artikel befestigt sein<br><br>
</font></font></font></font></b><h2><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3">Falls Sie Reklamationen haben</font></font></font></font></b></h2><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3">Wir bitten bei Beanstandungen der Ware sich erst mit uns in Verbindung zu setzten. Wir pruefen unsere Ware immer auf Defekte aber es kann vorkommen das uns etwas entgeht und bevor Sie eine "negative Bewertung" abgeben moechten wir die Chance bekommen Sie zufrieden zustellen. 
</font></font></font></font></b><p><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3"><b><font color="#ff0000" face="arial" size="5">
</font></b></font></font></font></font></b></p><center><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3"><b><font color="#ff0000" face="arial" size="5">Vielen Dank fuer Ihr Intresse!</font></b></font></font></font></font></b></center><p><b><font color="#990000" face="arial" size="5"><font color="#ff0000"><font color="black" face="arial" size="3"><font color="black" face="arial" size="3"><b><font color="#ff0000" face="arial" size="5"><br></font></b></font></font></font></font></b></p></blockquote></div></blockquote></td></tr></tbody></table><br><br>   1   Baltimore   1   0   1   0   0   0,10 €  0,00 €  0,00 €  0   0   1   77

我想知道是否有一个简单的方法与sed或awk删除HTML标记除了<p>标记.我还想知道是否有可能为任何链接html嵌入一个Flash SWF文件,改变HTML自动链接到这个文件.
因此,本质上,要替换任何代码,例如

<embed src="http://backend.supremeauction.com/app/gallery/loader.swf">

类似于<a href="http://backend.supremeauction.com/app/gallery/loader.swf">Click here for external description</a>的内容,然后删除除<p>之外的所有其他HTML标记
这可能吗?

sirbozc5

sirbozc51#

下面是用于删除非p标记的Perl--不过它不能跨行工作

perl -pe 's/<\/?(?>[^p]|p\w+)[^>]*>//ig'

这将把它打印到标准输出,你可以从那里重定向它。
如果您只有一个链接,则可以执行以下操作:

perl -pe 's/<embed\s+src="(.*?\.swf)"\/?>/<a href="$1">Click here for external description<\/a>/i;s/<\/?(?>[^ap]|[ap]\w+)[^>]*>//ig'
gmxoilav

gmxoilav2#

我为sed想到了这个:

sed -e 's/[<][/][^Pp][^>]*[>]//g' -e 's/[<][^/Pp][^>]*[>]//g' file
monwx1rj

monwx1rj3#

使用xmlstarlet过滤掉您想要的标签;因为它知道XML语法(这比在正则表达式中正确捕获要复杂得多),所以它在嵌套标签等极端情况下不容易失败,并且可以正确解码元素中的&amp;和kin。select子命令将接受XPath,因此查找A元素的普通表达式将满足您的需要。
format子命令有一个将HTML作为输入的选项,因此如果您的内容不是有效的XHTML,您将需要使用该选项执行初始处理阶段。

qltillow

qltillow4#

如果你想在Perl中实现这一点,有许多HTML实用模块可以帮助你转换和过滤HTML。其他语言可能也有类似的库。例如,参见HTML::Parser。你可以为你想影响的部分定义处理程序。一旦你控制了那个部分,你就可以转换它并决定如何输出它。
如果你有其他程序生成的非常规则的输出,你也许可以用正则表达式来解决,但是,每当我这样做的时候,正则表达式开始变得非常糟糕,因为我发现了特殊情况和异常。
听起来你也许可以解决这个问题。你真的只是试图提取URL并链接到它们吗?与其扰乱解析器,你可以直接提取URL并编写一个全新的文档,而不关心旧的文档吗?或者干脆用更大的文档完全替换一个区域?

相关问题