You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sed删除文件中的特定整行(含换行符)?

解决sed只清空内容留空行的问题

嘿,我懂你遇到的问题了——你之前用的 sed -i 's/foo//' /tmp/test 只是把行内的foo字符串替换成空内容,自然会留下空行。要彻底删除包含目标内容的整行(连换行符一起删掉),得用sed的删除命令d,而不是替换命令s///。

核心命令

直接用匹配模式加上d参数就能搞定:

sed -i '/foo/d' /tmp/test
  • /foo/:表示匹配所有包含foo字符串的行
  • d:告诉sed直接删除匹配到的整行,不会留下空行

进阶:精确匹配整行

如果你只想删除**完全等于foo**的行(而不是包含foo的行),可以加上行首行尾锚点:

sed -i '/^foo$/d' /tmp/test
  • ^:匹配行的开头
  • $:匹配行的结尾
  • 这样只有内容恰好是foo的整行会被删除,避免误删像hello foo这类包含foo的其他行

举个直观例子

假设/tmp/test原内容是:

hello foo
foo
bar test
  • 执行sed -i '/foo/d'后,文件内容变成:
    bar test
    
  • 执行sed -i '/^foo$/d'后,文件内容变成:
    hello foo
    bar test
    

内容的提问来源于stack exchange,提问作者jack sexton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:11:33