sed是Linux下安全可控的流式文本处理工具,支持按行号(如5d)、匹配模式(如/error/d)、正则约束(如/^[0-9]/d)删除行,并可通过-i选项就地编辑或备份。

Sed 是 Linux 下强大的流式文本处理工具,行级删除是其最常用的功能之一。它不直接修改原文件(除非加 -i 选项),而是将处理后的内容输出到标准输出或重定向保存,因此操作安全、可控。
按行号精确删除
这是最直观的删除方式,适用于已知目标行位置的情况。
- 删除第 5 行:
sed '5d' file.txt - 删除第 2 到第 6 行(含):
sed '2,6d' file.txt - 删除最后一行:
sed '$d' file.txt - 删除第 1 行和第 10 行:
sed '1d;10d' file.txt
按匹配模式删除行
根据内容特征动态定位并删除,适合处理日志、配置等结构化文本。
- 删除包含
error的所有行:sed '/error/d' file.log - 删除以
#开头的注释行:sed '/^#/d' config.conf - 删除空行(含只含空白字符的行):
sed '/^[[:space:]]*$/d' file.txt - 删除不包含
success的行(即只保留含 success 的行):sed '/success/!d' file.txt
结合正则实现条件删除
利用正则表达式提升匹配精度,避免误删。
- 删除以数字开头的行:
sed '/^[0-9]/d' data.txt - 删除 IP 地址格式行(如 192.168.1.1):
sed '/^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$/d' net.txt - 删除含完整单词
DEBUG(前后非字母数字)的行:sed '\bDEBUG\b/d' log.txt(注意:GNU sed 支持\b,其他 sed 可用[^a-zA-Z0-9]DEBUG[^a-zA-Z0-9]替代)
就地编辑与备份安全操作
默认 sed 输出到屏幕,生产环境建议先预览再写入,或启用备份机制。
- 预览效果(不改原文件):
sed '3,5d' file.txt - 直接修改原文件:
sed -i '3,5d' file.txt - 修改同时备份原文件为
file.txt.bak:sed -i.bak '3,5d' file.txt - 多个命令组合删除(如删空行+删注释):
sed -i.bak '/^[[:space:]]*$/d; /^#/d' config.conf
掌握行号定位、模式匹配、正则约束和安全编辑四个维度,就能覆盖绝大多数行级删除需求。实际使用时建议先不加 -i 测试输出,确认无误后再执行修改。











