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

如何使用sed为匹配指定模式的行开头添加#注释符

sed指定行添加注释失效解决方案

失效原因

  • 拼写错误:待匹配的目标行末尾参数为use_uid,你编写的匹配规则里误写为use_ui,缺失末尾字符d,无法命中对应行。
  • 硬编码固定空格容错性极差:系统配置文件中字段间的分隔符可能是不定数量的空格、制表符,你在规则里写死了固定个数的连续空格,只要实际文件里的分隔空白数量和规则不一致,就会匹配失败。

正确操作命令

推荐使用「正则匹配定位目标行+行首插入注释符」的写法,不需要重复书写整行内容,也不会受字段间空白数量/类型影响:

  1. 先执行预览命令确认匹配效果,该命令不会修改原文件,只会把修改后的结果输出到终端:
sed '/^auth[[:space:]]\+required[[:space:]]\+pam_wheel\.so[[:space:]]\+use_uid/s/^/#/' /etc/pam.d/su
  1. 检查终端输出,确认目标行已经正确加上#前缀后,再执行带-i参数的命令写入修改到原文件:
sed -i '/^auth[[:space:]]\+required[[:space:]]\+pam_wheel\.so[[:space:]]\+use_uid/s/^/#/' /etc/pam.d/su

注意:匹配规则里pam_wheel.so的.需要加反斜杠转义,正则语法中.默认匹配任意单个字符,不转义可能出现非预期的误匹配。

写法说明

如果一定要使用整行替换的逻辑,除了修正use_uid的拼写错误,还需要保证匹配串里的连续空格数量和目标文件里的完全一致,这种写法可移植性极差,只要配置格式稍有变动就会失效,不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:45:32