sed '/^#/d' 可删除纯注释行;处理前导空白需用 '/^[[:space:]]#/d';合并删除空行用 '/^[[:space:]]#/d; /^[[:space:]]*$/d';加 -i 直改文件,-i.bak 备份后修改。

直接用 sed '/^#/d' filename 就能删掉所有以井号(#)开头的注释行。它只匹配真正“行首是#”的行,不碰中间或后面带#的内容,安全又精准。
基础用法:只删纯注释行
命令结构简单明确:
-
/^#/是正则表达式,^ 表示行开头,# 是字面字符,合起来就是“这一行第一个非空字符是#” -
d是删除指令,匹配到就整行扔掉 - 默认不改原文件,结果输出到终端,方便你先确认效果
处理带空格的注释行
有些配置文件里注释前有空格或制表符,比如: # this is a comment。这时 /^#/ 就匹配不到。得放宽条件:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 用
/^[[:space:]]*#/d——[[:space:]]*表示零个或多个空白字符(空格、Tab等) - 或者简写为
/^[ \t]*#/d,效果一样,更直观
顺便清理空行和纯空白行
注释删完后,常剩下空行或只有空格的“假空行”,一起清掉更干净:
sed '/^[[:space:]]*#/d; /^[[:space:]]*$/d' filename- 第一段删带前导空白的注释行,第二段删纯空白行(含空行)
- 想直接改原文件?加
-i;想留备份?用-i.bak
验证再操作,避免误删
执行前建议先试运行,看输出是否符合预期:
- 不加
-i,只跑sed '/^#/d' config.conf,观察终端输出 - 确认无误后再加
-i生效 - 尤其注意:某些配置文件用分号(;)或井号(#)都作注释符,如需支持分号,把模式改成
/^[[:space:]]*[#;]/d

















