如何用sed删除文件中<>内的内容?现有命令存在误删问题
解决方法:删除文件中<>之间的内容
你之前的sed命令误删内容,是因为它匹配了https到行尾的所有字符,会连带删掉同一行后续的保留文本。正确的做法是精准定位<与>包裹的区间,直接删除整个区间内容。
方案1:处理单行内的<>内容
使用sed的正则匹配<到>的完整区间,命令如下:
sed -i 's/<[^>]*>//g' 你的文件名
- 细节说明:
<[^>]*>:匹配以<开头,后续所有非>的字符,直到遇到>为止的整块内容g标记:确保替换每一行中所有符合条件的匹配项
方案2:处理跨行的<>内容
如果你的文件存在<和>不在同一行的情况(比如链接内容被换行分割),可以用sed的循环匹配模式:
sed -i ':a; s/<[^>]*>//g; ta' 你的文件名
- 细节说明:
:a和ta:创建循环逻辑,反复执行替换操作,直到所有跨行的<>内容都被清理完毕
验证效果
用你的示例文本测试后,会得到如下结果:
texttobepreserved1 , texttobepreserved2 , texttobepreserved3
完全保留了需要的文本,仅删除了<>包裹的冗余内容。
内容的提问来源于stack exchange,提问作者SubotnikOne
相关产品推荐
相关产品推荐

