html - sed 从 html 文件中删除标签

标签 html regex linux bash

我需要使用 sed 命令从带有 bash 脚本的 html 中删除所有标签。 我试过这个

sed -r 's/[\<][\/]?[a-zA-Z0-9\=\"\-\#\.\& ]+[\/]?[\>]//g' $1

还有这个

sed -r 's/[\<][\/]?[.]*[\/]?[\\]?[\>]//g' $1

但我还是想念一些东西,有什么建议吗??

最佳答案

您可以使用众多 HTML to text converters 之一, 尽可能使用 Perl 正则表达式 <.+?>或者如果它必须是 sed使用 <[^>]*>

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

如果没有错误的余地,请改用 HTML 解析器。 例如。当一个元素分布在两行时

<div
>Lorem ipsum</div>

这个正则表达式将不起作用。


这个正则表达式由三部分组成 < , [^>]* , >

  • 搜索空缺<
  • 后跟零个或多个字符 * , 这不是结束 >
    [...]character class , 当它以 ^ 开头时寻找类(class)中的字符
  • 最后寻找关闭 >

更简单的正则表达式 <.*>将不起作用,因为它会搜索最长的可能匹配项,即最后一次关闭 >在输入行中。例如,当您在输入行中有多个标签时

<name>Olaf</name> answers questions.

将导致

answers questions.

代替

Olaf answers questions.

另见 Repetition with Star and Plus ,尤其是第Watch Out for The Greediness!节并在下面进行详细解释。

关于html - sed 从 html 文件中删除标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19878056/

相关文章:

linux - 如何统计某个目录下所有文件中某个单词的出现次数?但每个文件每个单词的计数仅增加一次

html - 拖放 Revel框架使用html5

javascript - 带有div的复杂html布局

javascript - 上传 csv 文件时删除空行

regex - grep 排除带有正则表达式字符串的字符串

php - 表达式不匹配正则表达式

html - 如何在执行 float :right. 后垂直显示列表 How can I display the list vertically after float:right

javascript - 显示/隐藏 Javascript 问题

regex - 在Python中通过多个分隔符将一列分成两列

linux - 排序并给出总数