我需要使用 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/