Удалить код панели инструментов обратного хода между восемью строками
Я пытаюсь удалить код панели инструментов 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, поэтому есть некоторые различия. Сейчас я не могу найти запись стека переполнения, но я уверен, что ее можно найти.