Удалить код панели инструментов обратного хода между восемью строками

Я пытаюсь удалить код панели инструментов Wayback, используя некоторые инструменты, такие как find & xargs и grep with sed и т. Д.

проблема в том, что размер html и php файлов превышает 7 ГБ, а также страниц больше (3 миллиона страниц). Я хочу сделать это для всех страниц, которые начинаются с Wayback tooldbar, который я скачал с web.archive.org. хорошо, что код панели инструментов обратного хода начинается и заканчивается

<!-- 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 -->' '{}'

я могу поймать те файлы, которые содержат панель инструментов

но я застрял в том, как удалить код между <начало и конец>

3 ответа

Решение

Вы захотите использовать sed для удаления этого материала:

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

Вы можете получить неизмененную копию HTML-документов с Wayback Machine, добавив id_ к дате / времени снимка в URL.

Например:

С панелью инструментов: https://web.archive.org/web/20180101010338/http://www.example.com:80/

Необработанный оригинал: https://web.archive.org/web/20180101010338id_/http://www.example.com:80/

На macOS:

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

macOS определенно нужна пустая строка, передаваемая в качестве аргумента -i, потому что они используют BSD-версию find вместо GNU-версии в linux, поэтому есть некоторые различия. Сейчас я не могу найти запись стека переполнения, но я уверен, что ее можно найти.

Другие вопросы по тегам