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

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

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

Defaults requiretty

我认为最好的方法是使用内联 sed 搜索和替换或搜索和插入。问题是 Defaults 和 requiretty 之间也可能有 1+ 个空格/制表符。什么是有效的 sed 解决方案?

答案1

杰伊的回答几乎不变sed

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

答案2

我个人会使用 Perl

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

(行必须以 开头Defaults才能匹配。如果您不想要这样,只需删除^。将捕获和\s+之间的任意数量的空格。)Defaultsrequiretty

相关内容