以递归方式在html文件中搜索和替换/添加一些标记属性

时间:2016-02-21 15:09:27

标签: html linux replace command-line pattern-matching

我希望这个问题的用例对于在这个网站上提出这个问题并不太具体。我有一个非常直截了当的问题,但我认为它可以帮助我们了解更多通用方法以及通过命令行工具处理搜索和替换方法,以便其他人可能会遇到这个问题。

我的问题:

我有一个包含几千个html文件的目录结构,我想做的是:

每当有一个带有[Code] => 1102 [Details] => AccountId is invalid [ErrorCode] => CampaignServiceInvalidAccountId [Message] => The account ID is invalid. 属性集的标记时,我想向其添加id,或者如果已经有一个或多个类,则添加类"锚点&# 34;另外。

所以我想替换任何

class="anchor"

<someTag id="some-id">

和任何

<someTag id="some-id" class="anchor">

<someTag id="some-id" class="some-class">

当然可能会有各种属性混合在一起,所以我需要某种搜索和替换方法才能正确识别尖括号之间的这些东西。

我正在使用Ubuntu,所以我有各种各样的命令行工具,比如sed在我的指尖,但我对它们的使用不是很有经验。因此,如果有更多经验的人知道快速解决方案,对我来说会有很大帮助。

非常感谢您阅读和思考它,如果您有任何建议,那将会很棒。

1 个答案:

答案 0 :(得分:0)

HTML is famously difficult to parse with a regexp所以我不知道。

也许这种困难被夸大了?

或由“常规”HTML中不存在的特殊情况触发?

我不确定所有问题是什么,但对这个问题的不客笑的答案可能会解释它。

网站是否使用javascript,使用该网站的网络浏览器是否启用了javascript?因为我猜在用户的浏览器中使用javascript在运行时进行这些编辑(在页面中为元素添加类)很容易(或更容易)(因为浏览器已经解析了HTML并构建了DOM)

或者我不确定为什么要向带有id的元素添加类;如果原因是CSS中引用了类名,则可以选择将这些ID(用逗号分隔的类名)添加到CSS中。