最常用且可靠的方法是用 sed '/^$/d' 删除纯空行;进阶用法 sed '/^[[:space:]]*$/d' 可删除含空格或制表符的视觉空行,加 -i 选项可就地修改文件。

用 sed 删除文件中的所有空行,最常用且可靠的方法是匹配只包含换行符(即不含任何可见字符、空格或制表符)的行并删除。
基础用法:删除纯空行
纯空行指整行只有换行符,不包含空格、制表符等空白字符:
sed '/^$/d' filename
说明:
- ^ 表示行首,$ 表示行尾
- ^$ 匹配从开头到结尾之间没有任何字符的行
- d 命令表示删除该行
进阶用法:删除含空白字符的“视觉空行”
如果空行中混有空格或制表符(如 或 \t),上面命令无法匹配。此时需匹配“仅含空白字符”的行:
sed '/^[[:space:]]*$/d' filename
说明:
- [[:space:]]* 匹配零个或多个空白字符(包括空格、tab、换行符等)
- 整个正则 ^[[:space:]]*$ 覆盖了真正意义上的“空内容行”
就地修改文件(不生成新文件)
加 -i 选项直接修改原文件:
sed -i '/^[[:space:]]*$/d' filename
注意:
- 在 macOS 上需写成 sed -i '' '/^[[:space:]]*$/d' filename(多一个空字符串参数)
- 操作前建议先备份,例如 sed -i.bak '/^[[:space:]]*$/d' filename
验证效果与调试技巧
执行前可先预览哪些行会被删掉:
- 查看空行位置:
grep -n '^[[:space:]]*$' filename - 预览处理结果(不改原文件):
sed '/^[[:space:]]*$/d' filename | head -10 - 统计原文件和处理后行数:
wc -l filename和sed '/^[[:space:]]*$/d' filename | wc -l


















