Sed 从 html 文件中删除标签
- 2024-10-17 08:47:00
- admin 原创
- 65
问题描述:
我需要使用 sed 命令通过 bash 脚本从 html 中删除所有标签。我尝试过这个
sed -r 's/[<][/]?[a-zA-Z0-9=\"-#.& ]+[/]?[>]//g' $1
并且
sed -r 's/[<][/]?[.]*[/]?[\\]?[>]//g' $1
但我仍然遗漏了一些东西,有什么建议吗?
解决方案 1:
您可以使用众多HTML 到文本转换器之一,如果可能的话,使用 Perl 正则表达式<.+?>
,或者如果必须sed
使用<[^>]*>
sed -e 's/<[^>]*>//g' file.html
如果没有出错的余地,请改用 HTML 解析器。例如,当一个元素分布在两行上时
<div
>Lorem ipsum</div>
这个正则表达式不起作用。
此正则表达式由三部分组成<
,,[^>]*
`>`
搜寻空缺
<
后跟零个或多个字符
*
,这些字符不是结尾字符>
[...]
,是字符类,当它以 开头时,^
查找不属于该类的字符
最后寻找结束
>
更简单的正则表达式<.*>
不起作用,因为它会搜索最长的匹配项,即>
输入行中的最后一个结束符。例如,当输入行中有多个标签时
<name>Olaf</name> answers questions.
将导致
回答问题。
而不是
奥拉夫回答问题。
另请参阅使用星号和加号的重复,尤其是小心贪婪!部分以及后续内容,以获得详细解释。
解决方案 2:
我知道 OPsed
特别要求了,但即使对于非 sed 搜索者来说,这个页面也是 Google 中的最佳搜索结果。
Perl 一行程序
cat - | perl -pe 's{
}{ }g' | perl -pe 's{>}{>
}g' | perl -pe 's{<}{
<}g' | grep -v '<' | grep -v '^s*$'
请随意编辑它(我已将其标记为社区维基),它并不完美。
解释
对于我来说现在要输入的内容太多了,但是explainshell.com是一个开始。
其他说明
我很惊讶没有成熟的工具可以做到这一点,只有大量混乱的 npm 命令行工具。我不喜欢 npm 留下的大量垃圾。一个 golang 预编译的单个二进制文件或 via 之类的东西brew install
将是终极梦想
解决方案 3:
我经常用它lynx -dump -nolist <URL>
来达到原帖的目的。但是,你仍然需要格式化,所以你可能想要额外删除每行开头的空格。
解决方案 4:
虽然远非完美,但对我来说已经足够了:
curl -Ls https://stackoverflow.com | # load html content
tr -d '
' | # remove carriage return
tr '
' '
' | # replace line breaks against carriage return to allow sed to replace across multiple lines
sed -E "s//(script|style)>/
/g" | # replace closing script/css tags against new line
sed -E "s/<(script|style).*//g" | # replace whole script/css blocks ungreedy
sed -E 's/(="[^"]*)>//g' | # replace closing bracket inside of double quotes
sed -E "s/(='[^']*)>//g" | # replace closing bracket inside of single quotes
sed "s/<[^>]*>/ /g" | # replace all other html tags against white space
tr '
' '
' | # replace carriage return against new line
tr ' ' ' ' | # replace tabulator against white space
tr -s ' ' | # reduce consecutive white space
sed "s/^ //g" | # remove white space from the beginning of each line
grep -v "^$" # remove empty lines
返回:
Stack Overflow - Where Developers Learn, Share, &amp; Build Careers
Stack Overflow
About
Products
For Teams
Stack Overflow
Public questions &amp; answers
Stack Overflow for Teams
Where developers &amp; technologists share private knowledge with coworkers
Talent
Build your employer brand
Advertising
Reach developers &amp; technologists worldwide
Labs
The future of collective knowledge sharing
About the company
Loading&#x2026;
current community
Stack Overflow
help
chat
...
API
Data
Blog
Facebook
Twitter
LinkedIn
Instagram
Site design / logo &#169; 2024 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev&nbsp;2024.3.22.6753
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD