sed:如何在匹配行的开头插入注释

我试图编写一个脚本,每次启动一个新的EC2实例时,将在/ etc / sudoers中注释掉以下行:

Defaults requiretty

我假设这样做的最好方法是内联sedsearch和replace或search和插入。 问题是在Defaults和requiretty之间可能会有1+个空格/制表符。 什么是高效的sed解决scheme?

周杰伦的答案几乎与sed没有任何变化:

 sed -i 's/^Defaults[ \t]+requiretty/# Defaults requiretty/g' /etc/ssh/sshd_config 

我个人使用Perl

 perl -pi -e 's/(^Defaults\s+requiretty)/# $1/g' /etc/ssh/sshd_config 

(线必须以Defaults开始,以匹配它,如果你不想这样做,只需删除^\s+将捕获Defaultsrequiretty之间的任意数量的空格。