我需要过滤掉文本文件中的所有HTML标记(可能是<...>之间的任意序列)
我想出了一个命令:cat my_file | sed 's/<[^>]*>//',但是它在行中使用了第一个标记。如何删除所有标签?正则表达式有问题吗?
发布于 2022-01-30 15:56:42
来自sed手册:
s命令后面可以有以下零或多个标志:
G
将替换应用于所有匹配的regexp,而不仅仅是第一个。
所以
cat my_file | sed 's/<[^>]*>//g'发布于 2022-01-30 17:46:27
如果您的目的是删除所有的标签,并只得到他们之间的文字。使用,html2text或pup 'text{}‘https://github.com/ericchiang/pup http://www.mbayer.de/html2text/还有其他工具,如xidel、xmlstarlet。
https://stackoverflow.com/questions/70915960
复制相似问题