Существует ли инструмент командной строки, который может удалить комментарии из XML-файла? Или я должен записать небольшую программу, которая использует синтаксический анализатор XML, чтобы сделать это?
Обновление: я не интересуюсь решениями, которые только обрабатывают подмножество всех возможных XML-файлов.
Например, regexp не может обработать парсинг XML.
Я сделал бы это таким образом:
cat myfile.xml | sed '/<!--.*-->/d' | sed '/<!--/,/-->/d' > cleaned.xml
Или:
awk 'in_comment&&/-->/{sub(/([^-]|-[^-])*--+>/,"");in_comment=0}
in_comment{next}
{gsub(/<!--+([^-]|-[^-])*--+>/,"");
in_comment=sub(/<!--+.*/,"");
print}'
Или:
xmlstarlet ed -d '//comment()' file.xml