You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian12下sed无法注释含星号的行问题求助

问题

尝试通过sed命令注释一行SSH配置内容,执行的命令如下:

sudo sed -i "s|Include /etc/ssh/sshd_config.d/*.conf|#Include /etc/ssh/sshd_config.d/*.conf|" /etc/ssh/sshd_config

但命令未生效,无报错信息,目标行却未被注释。操作环境为Debian 12,请问问题出在哪里?

原因与解决方法

  • 核心问题:正则特殊字符未转义
    sed使用正则表达式处理匹配,其中*和.是具有特殊含义的元字符:

    • *:作为量词,匹配前面的字符0次或多次,不是字面意义的通配符
    • .:匹配任意单个字符,不是字面意义的点号
      原命令里直接写*.conf,sed会把它解析成正则规则,无法匹配配置文件里的字面量*.conf,导致替换失败。
  • 正确命令
    转义特殊字符,同时用#&简化替换逻辑(&代表匹配到的整个内容):

    sudo sed -i "s|Include /etc/ssh/sshd_config.d/\*\.conf|#&|" /etc/ssh/sshd_config
    

    如果确认配置行里的点号没有拼写差异,也可以只转义*:

    sudo sed -i "s|Include /etc/ssh/sshd_config.d/\*.conf|#&|" /etc/ssh/sshd_config
    

内容的提问来源于stack exchange,提问作者Sig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:13:12