最常用方法是用 grep -vE '^\s#|^\s$' 排除空白行和注释行;也可用 sed、awk 或分步 grep 实现;操作前需备份,sed -i 可直接修改原文件。

最常用也最直接的方法是用 grep -v 配合正则表达式一次性排除空白行和注释行。
核心命令(推荐)
执行以下命令即可生成不含空白行和注释行的新文件:
grep -vE '^[[:space:]]*#|^[[:space:]]*$' old.conf > clean.conf
- -v:反向筛选,只保留不匹配的行
-
-E:启用扩展正则,支持
|(或)逻辑 -
^[[:space:]]*#:匹配以任意空白字符(空格、制表符等)开头、后跟#的注释行 -
^[[:space:]]*$:匹配整行只含空白字符(包括纯空行)的行
其他实用替代方案
根据使用习惯或环境限制,也可选用这些等效方式:
-
用 sed 删除:
sed '/^[[:space:]]*#/d; /^[[:space:]]*$/d' old.conf > clean.conf -
用 awk 筛选:
awk '!/^[[:space:]]*#/ && NF' old.conf > clean.conf(NF自动跳过空白行) -
分步过滤(易理解):
grep -v '^#' old.conf | grep -v '^[[:space:]]*$' > clean.conf
注意事项
操作前建议先备份原文件,尤其处理关键配置时:
cp old.conf old.conf.bak- 若需直接修改原文件(谨慎!),sed 可加
-i参数:sed -i '/^[[:space:]]*#/d; /^[[:space:]]*$/d' old.conf - 某些配置文件使用
;作注释符(如 INI 类),可把正则中的#换成[#;]


















