我想在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。*足够。* pam_wheel.so trust use_uid ”,如果找到,请将“ #auth ”替换为“ auth “,然后在行
中附加后面的措辞答案 0 :(得分:3)
使用GNU sed,查找允许就地修改的-i
选项,然后锚定正则表达式。例如:
sed -i '/^#auth.*pam_wheel/s/^#//' INPUTFILE
将查找以"#auth"开头的行包括" pam_wheel"稍后在线并更换"#"一开始没什么。