【问题标题】:Linux sed replacing word in generic wayLinux sed 以通用方式替换单词
【发布时间】:2016-04-20 21:58:16
【问题描述】:

我想在 Linux 中执行一个 sed 命令来取消注释“#auth”

原始文件

#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid

我可以写这个命令来做到这一点:

sed 's/#auth.*sufficient.*pam_wheel.so trust use_uid/auth\t    sufficient\t  pam_wheel.so trust use_uid/' /etc/pam.d/su

但我认为它太长了。有没有更好的方法来做到这一点(更通用)? 我不想指定行号来替换它,因为如果有人更改了文件,脚本将无法正常运行。

例如:

搜索关键字“#auth.*sufficient.*pam_wheel.so trust use_uid”,如果找到,将这个词“#auth”替换为“ auth",然后在该行中附加后面的措辞

【问题讨论】:

    标签: linux sed


    【解决方案1】:

    使用 GNU sed,查找允许就地修改的 -i 选项,然后锚定正则表达式。例如:

     sed -i '/^#auth.*pam_wheel/s/^#//' INPUTFILE
    

    将在该行后面查找以“#auth”开头且包含“pam_wheel”的行,并将开头的“#”替换为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 2013-09-12
      • 2012-03-07
      • 2019-03-07
      • 2017-02-08
      • 1970-01-01
      相关资源
      最近更新 更多