如何使用regex和命令行UNIX在sql中搜索和删除html链接

时间:2015-04-10 12:51:47

标签: regex unix sed grep html-parsing

在我们的Magento应用程序中,我在cms页面中找到了几个未使用的链接,因此,我导出了表,我有一个sql文件,现在我想用命令行替换/删除这些链接。

我尝试使用正则表达式模式来执行此操作,但我的正则表达式体验基于在此regex interactive web中播放。

这些页面中有很多链接,但我只想删除那些链接到domainname.comdomainname.es的链接,因此,最好的方法是使用这些链接:

<a title=\"CRADLE 1-SLOT SER USB CK30/31 NOTES\" href=\"http://domainname.com/terminales-intermec-accesorios/3813-cradle-1-slot-ser-usb-ck3031-notes.html\"></a>

<a title=\"CRADLE 1-SLOT SER USB CK30/31 NOTES\" href=\"http://domainname.es/terminales-intermec-accesorios/3813-cradle-1-slot-ser-usb-ck3031-notes.html\"></a>

我尝试使用grep和/或sed,但使用我的正则表达式

grep “\w+\=+\\\"+\w+\:\/\/+(s|\w)+(s|\.)+(s|plusexpress)+\.(\/a>)\b”

它没有用,所以,欢迎任何帮助!

编辑:

sqlfile只有这样的字符串:

d style=\"text-align: center;\">&nbsp;<img src=\"http://www.anotherdomain.com/media/small_image.jpg\" alt=\"\" width=\"117\" height=\"117\" /><br /></td>\r\n<td style=\"text-align: center;\">\r\n<p>PSU WALL AC CV30 NOTES</p>\r\n</td>\r\n<td>Univ Supply Circ 5P 12V 50W FW5012 RoHS.<br /></td>\r\n<td>Requires AC power cord (CAIEC) Will not power heated display element.&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td style=\"text-align: left;\">\r\n<p><a href=\"http://www.anotherdomain.com/checkout/cart/add?product=7797\" target=\"_blank\">VE011-2013</a><a title=\"WALL MOUNT CABLE PROTECTOR CV30  NOTES\" href=\"http://domainname.es/termina-accesorios/3982-wall-mount-cable-protector-cv30--notes.html\"></a></p>\r\n</td>\r\n<td style=\"text-align: center;\"><img src=\"http://www.anotherdomain.com/media/small_image.jpg\" alt=\"\" width=\"117\" height=\"117\" /><br /></td>\r\n<td style=\"text-align: center;\">\r\n<p>WALL MOUNT CABLE PROTECTOR CV30 NOTES<a title=\"WALL MOUNT CABLE PROTECTOR CV30  NOTES\" href=\"http://www.anotherdomain.com/ve011-2013\"></a></p>\r\n</td>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td style=\"text-align: left;\">\r\n<p><a href=\"http://www.anotherdomain.com/checkout/cart/add?product=3681\" target=\"_blank\">VE011-2011</a><a title=\"ADAPTOR MOUNTING PLATE CV30 \" href=\"http://domainname.es/termina-accesorios/3981-adaptor-mounting-plate-cv30-.html\"></a></p>\r\n</td>\r\n<td style=\"text-align: center;\"><img src=\"http://www.anotherdomain.com/media/small_image.jpg\" alt=\"\" width=\"117\" height=\"117\" /><br /></td>\r\n<td style=\"text-align: center;\">\r\n<p>ADAPTOR MOUNTING PLATE CV30</p>\r\n</td>\r\n<td><br /></td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td style=\"text-align: left;\">\r\n<p><a href=\"http://www.anotherdomain.com/checkout/cart/add?product=3680\" target=\"_blank\">VE011-2006</a></p>\r\n</td>\r\n<td style=\"text-align: center;\"><span style=\"color: #ff0000;\"><img title=\"VE011-2006 MOUNT KIT BRACKET WALL CV30\" src=\"h

1 个答案:

答案 0 :(得分:0)

假设链接在1行(并且只有这个,所以删除整行)并基于您的样本

grep -v 'href=\\"http://[^/"]*(domainname.com|domainname.es)/' YourFile

它会删除带有此href链接的所有行标记(如果需要,您可以过滤到<A标记)