html - 仅 html 文件的 Bash diff 正文文本

标签 html shell diff

我正在编写一个 shell 脚本,用于跟踪网站的更改,并在发生更改时通过电子邮件将更改内容发送给我。这个想法是使用 wget 获取 html 的副本并将其与上次脚本运行时的版本进行比较。 Wget 可以很好地保存 html 文件,但我在比较这些文件时遇到了问题。问题是我只对 html 文件的纯文本的变化感兴趣,而不是代码、链接等。

Diff 用于查找两个文件中的所有更改,但即使纯文本相同,它也总是返回更改。这是因为网站上的每个链接都有一个相应的真实性 token ,每次访问页面时该 token 都不同。为了仅区分包含纯文本的行,我试图对其进行过滤以排除以“<”或“(any_amount_of_spaces)<”开头的任何行。我查看了 diff 手册页,但我似乎找不到可以满足我需要的运算符(operator)。我对 REGEX 了解不多,但它可以与 diff -I 一起使用吗?

谢谢!

最佳答案

你可以使用 lynx -dump呈现页面并将其提供给 diff , 但由于您对链接不感兴趣,您需要删除 References这产生的部分(例如 awk )使它成为一个不太健壮的解决方案(但对于您的用例来说可能足够好)。

如果您不介意使用第 3 方的东西,请使用 html2text :

diff <(html2text before.html) <(html2text after.html)

PS:有两个不同的程序叫做 html2text .

关于html - 仅 html 文件的 Bash diff 正文文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16753506/

相关文章:

php - 无法执行 <form> 标记中指定的操作

linux - 使用 shell 或 bash 脚本根据目录名称删除多个目录的脚本

shell - 在 shell 脚本中合并两个输出

css - 删除多个文件中的重复 CSS 声明

git - git 上的奇怪冲突

html - CSS 继承 : ul style not applied to nested div

html - 需要帮助将 div 与 CSS 对齐

javascript - 生成差异 JSON

javascript - 由于特殊字符而尝试替换 javascript 中的 url 时出现问题

c - 完成百分比