使用带有 sed 的正则表达式删除 html 标签

Remove html tag using regex with sed

说,

我有一个由 soffice --headless 命令生成的来自 Word (DOCX) 的 html 文件。然后我执行了 tidy 命令,通过从 Word 中删除不必要的 html/css 修饰,使 html 看起来干净。

我看到了类似的东西

<p lang="en-US" class="western c31"></p>

<p lang="en-US" class="western c31"></p>

<p lang="en-US" class="western c31"></p>

<p lang="en-US" class="western c31"></p>

<p lang="en-US" class="western c31"></p>

<p lang="en-US" class="western c31"></p>

<p lang="en-US" class="western c31"></p>

<p lang="en-US" class="western c31"></p>

<p lang="en-US" class="western c31"></p>

... repeated 15 times

我执行了这些命令: sed -e 's/<(.*?)><\/(.?)>//g' > ./hasil.html sed -e 's/<[a-z] lang="(.*) class="western (.*?)><\/[a-z]>//g' > ./hasil.html

从 HTML 文件中删除 <p lang="en-US" class="western c31"></p> 无法正常工作。

我试过了 link or this link,但也没有用。

如有任何帮助,我们将不胜感激。谢谢。

sed 的所有正则表达式都是寻找(最左边的)最长匹配项。 Perl 和其他人可能支持 .*? 非贪婪正则表达式的形式,但 sed 不支持。

如果你想删除那些行,试试:

sed '\|<p lang="en-US" class="western c31"></p>|d' hasil.html

d是sed的删除命令。

如果您想使用替代命令仅删除那些标签,而留下任何其他内容(如果有的话):

sed 's|<p lang="en-US" class="western c31"></p>||g' hasil.html