sed批量注释配置文件某行需用地址匹配和替换表达式,如精准注释port 22行用sed -i '/^port 22$/s/^/#/',模糊注释含关键词行用sed -i '/permitrootlogin/s/^/#/',注释首次出现行用sed -i '0,/listenaddress/{/listenaddress/s/^/#/}',操作前应预览效果。

用 sed 批量注释配置文件中某行,核心是匹配目标行并在其开头插入注释符(如 #)。关键是写对地址匹配和替换表达式,避免误操作。
精准匹配整行内容
如果要注释掉完全等于某字符串的行(例如 Port 22),用 ^ 和 $ 锚定首尾:
sed -i '/^Port 22$/s/^/#/' sshd_config-
-i表示直接修改原文件(建议先备份:cp sshd_config sshd_config.bak) -
/^Port 22$/确保只匹配独立一行,不匹配MyPort 22或Port 222
匹配包含关键词的行(模糊但常用)
多数场景只需注释含某个关键词的行(如所有含 PermitRootLogin 的行):
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
sed -i '/PermitRootLogin/s/^/#/' sshd_config- 该命令会在所有匹配行的行首加
#,即使该行已有注释也不会重复添加 - 若想跳过已注释的行,可加否定条件:
sed -i '/^[[:space:]]*PermitRootLogin/!b;/^[[:space:]]*#/b;s/^/#/' sshd_config(稍复杂,日常简单场景通常不需要)
只注释第一次出现的匹配行
有时只想禁用第一个配置项(比如第一个 ListenAddress):
sed -i '0,/ListenAddress/{/ListenAddress/s/^/#/}' httpd.conf-
0,/pattern/表示从文件开头到第一次匹配行为范围,{...}内只对该范围内的匹配行执行替换 - 注意:GNU sed 支持
0,/pattern/,BSD/macOS sed 不支持,需改用1,/pattern/并确保第一行不是匹配行
预览效果再执行(推荐习惯)
运行前先看会改成什么样,避免误操作:
- 去掉
-i,用cat或管道测试:sed '/Port 22/s/^/#/' sshd_config | head -n 10 - 或重定向到新文件对比:
sed '/Port 22/s/^/#/' sshd_config > sshd_test && diff sshd_config sshd_test - 确认无误后再加
-i实际修改










