我有很多从服务器上抓取的 HTML 文件(值(value) 10,000 个和 GB),我想检查以确保服务器在进行一些修改后产生相同的结果,但忽略一些无关紧要的差异,例如空格、缺少换行符、时间戳、某些数字的微小变化等。
有人知道有一个工具可以做到这一点吗?我真的不想做不必要的过滤。
(哦,它需要在linux下运行)
最佳答案
您可以考虑使用克隆检测器,例如我们的 CloneDR 。该工具解析大量计算机程序(HTML 是特例)文件,构建表示每个文件基本结构的抽象语法树,并比较程序的相似性。 因为它是比较本质的程序结构,所以它忽略注释和空格等无关紧要的差异,并确定两个代码段是相同的,或者可以通过替换其他代码块从另一个代码段获得一个代码段。后者允许识别以各种方式修改的代码。您可以在网站上查看在各种计算机语言上运行的克隆检测示例。
就您而言,您要查找的是系统 A 中的文件,这些文件本质上是系统 B 中文件的克隆(精确或几乎未命中)。作为一般规则,如果文件 a是文件 b 的变体(例如,进行一些更改),CloneDr 会将其报告为克隆并显示确切的差异。
在 20,000 个文件的规模上,我可以理解为什么您需要一个工具,并且我可以理解为什么您需要接近匹配而不是精确匹配。
不能在 Linux 下运行,但我认为您的问题很难解决,因此这不是您要优化的内容。
关于diff - 批量比较/区分 HTML 的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145373/