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