删除两行之间的 wayback 工具栏代码

删除两行之间的 wayback 工具栏代码

我正在尝试使用 find 和 xargs 以及 grep 和 sed 等工具删除 Wayback 工具栏代码

问题是 html 和 php 文件的大小超过 7GB,页面数量也超过(300 万页),我想对所有以 Wayback 工具栏开头的页面执行此操作,这些页面是从 web.archive.org 下载的。wayback 工具栏代码的开头和结尾都以

<!-- BEGIN WAYBACK TOOLBAR INSERT -->
 Wayback tooldbar code
 bla bla bla 
<!-- END WAYBACK TOOLBAR INSERT --> 

但没有按行排序。因此,我尝试使用以下命令

find . -type f -name '*.php*' | xargs -I {} grep -l '<!-- BEGIN WAYBACK TOOLBAR INSERT -->' '{}'

我可以捕获那些包含工具栏的文件

但我一直困惑于如何删除 <start 和 end> 之间的代码

答案1

您将需要使用 sed 来删除这些内容:

find ... -print0 | 
xargs -0 sed -i '/BEGIN WAYBACK TOOLBAR INSERT/,/END WAYBACK TOOLBAR INSERT/d'

答案2

id_您可以通过在 URL 中附加快照日期/时间从 Wayback Machine 检索未修改的 HTML 文档副本。

例如:

使用工具栏:https://web.archive.org/web/20180101010338/http://www.example.com:80/

原始原文:https://web.archive.org/web/20180101010338id_/http://www.example.com:80/

答案3

在 macOS 上:

find ./ -type f -exec sed -i '' -e '/BEGIN WAYBACK TOOLBAR INSERT/,/END WAYBACK TOOLBAR INSERT/d' {} \;

macOS 特别需要将一个空字符串作为参数传递给 -i,因为它们使用的是 BSD 版本的 find,而不是 Linux 上的 GNU 版本,因此存在一些差异。我现在找不到关于它的 stackoverflow 帖子,但我确信可以搜索到。

相关内容