我需要使用 sed 命令使用 bash 脚本从 html 中删除所有标签。我试过这个
sed -r 's/[\<][\/]?[a-zA-Z0-9\=\"\-\#\.\& ]+[\/]?[\>]//g' $1
有了这个
sed -r 's/[\<][\/]?[.]*[\/]?[\\]?[\>]//g' $1
但我仍然想念一些东西,有什么建议吗?
您可以使用许多HTML 到文本转换器中的一种,如果可能,请使用 Perl 正则表达式,<.+?>
或者如果必须sed
使用它<[^>]*>
sed -e 's/<[^>]*>//g' file.html
如果没有出错的余地,请改用 HTML 解析器。例如,当一个元素分布在两条线上时
<div
>Lorem ipsum</div>
这个正则表达式不起作用。
这个正则表达式由三部分组成<
,[^>]*
,>
<
*
,不是结束符>
[...]
是一个字符类,当它以^
查找不在该类中的字符开始时>
更简单的正则表达式<.*>
将不起作用,因为它会搜索可能的最长匹配,即>
输入行中的最后一个结束。例如,当您在输入行中有多个标签时
<name>Olaf</name> answers questions.
将导致
回答问题。
代替
奥拉夫回答问题。
另请参阅Star 和 Plus 的重复,尤其是当心贪婪部分!以及以下,以获得详细的解释。