BASH中删除文本文件所有HTML标签的方法及sed命令问题咨询
解决sed仅删除每行第一个HTML标签的问题
嘿,这个问题我太熟了!你说得完全没错——问题确实出在sed替换命令的默认行为上,本质和正则表达式的写法关联紧密。
默认情况下,sed的s/正则/替换内容/命令只会替换每行中第一个匹配到的内容,这就是为什么你的命令只能删掉每行第一个HTML标签。要实现全局替换,只需要给替换命令加上g(global,全局)标志就行。
修改后的可用命令:
cat my_file | sed 's/<[^>]*>//g'
简单拆解说明:
g标志:这是关键!它告诉sed要替换当前行内所有匹配到的<[^>]*>模式,而不是只处理第一个匹配项。- 关于你命令里的
<和>:这是HTML转义字符,在终端直接执行sed命令时,用实际的<和>就可以,不需要转义哦。
额外小提示:
如果你的HTML标签存在跨行的情况(比如一个标签被拆分成了两行),这个单行sed命令就不太够用了。不过如果所有标签都在单行内,上面的命令完全能满足需求。
内容的提问来源于stack exchange,提问作者pyzololo
相关产品推荐
相关产品推荐

