2014-10-22 5 views
0

Я много искал, чтобы найти решение, но не смог его найти. Я знаю, как удалить все теги с помощью sed, но мне нужно удалить только те теги HTML, которые пусты или имеют только табуляции или пробелы в них, а также явно удалять теги. Например:Удалить пустые теги HTML из файла с помощью sed

<p></p> or <p> </p> 

Я использовал следующую команду, чтобы удалить все HTML-теги, он работает правильно, но я не хочу, чтобы удалить все теги.

sed -e 's/<[^>]*>//g' myfile.html 

та же команда используется here. Пожалуйста, помогите мне.

ответ

1

Вы можете использовать приведенную ниже команду sed для удаления только пустых тегов.

sed 's/<[^\/][^<>]*> *<\/[^<>]*>//g' file 

Через Perl,

perl -pe 's/<([^<>]*)>\s*<\/\1>//g' file 
+0

Спасибо! еще одна проблема i, что тег не всегда закрывается как '', некоторые теги написаны так: ''. будет ли эта команда сохранена для этих тегов? – Hammadzafar

+0

, то используйте этот 'sed -r 's/<[^\/][^<>] *> * <\/?[^<>] * \ /?> // g' file' –

+0

спасибо! он работает – Hammadzafar

1
sed -r 's/<([a-zA-Z0-9]+)>[ \s\t]*<\/\1>//g' file 
+0

это не сработает после того, как вы изменили свое требование! :-) Так как @Avinash предоставил ответ, я оставил его там :-) –