Если вы счастливы установить BeautifulSoup , этот простой скрипт на Python может сделать то, что вы хотите:
#!/usr/bin/evn python
import sys
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(sys.stdin.read())
for a in soup.findAll("a"):
a["href"] = a["href"].replace("&", "")
print soup
Пример использования:
[me@home]$ cat your.html | python amp_remover.py
<li><a href="/battered-fried-chicken-breast-no-skin.html">battered fried chicken breast, no skin</a></li>
<li><a href="/bbq-short-ribs-with-sauce.html">bbq short ribs with sauce</a></li>
<li><a href="/bbq-spareribs--sauce-eat-lean--fat.html">bbq spareribs & sauce (eat lean & fat)</a></li>
<li><a href="/bbq-spareribs--sauce-eat-lean-only.html">bbq spareribs & sauce (eat lean only)</a></li>
Предостережение: Поскольку мы регенерируем выходной HTML-код на основе разобранного его представления, форматирование может измениться. Другие возможные изменения включают явное закрытие тегов, если ваша разметка сформирована неправильно.
Возможно, я ошибаюсь, но я подозреваю, что большинство решений, использующих правильный синтаксический анализатор XML / HTML, приведет к аналогичным проблемам. Чтобы сохранить файл таким, какой он есть, и удалить только оскорбляющие символы, вам придется использовать поиск и удаление / замену на основе регулярных выражений. Многие будут советовать не разбирать XML / HTML с помощью регулярных выражений , за исключением действительно тривиальных шаблонов. В вашем случае это может быть правдой, но я еще не убежден.