![sed:如何在匹配行的开头插入注释](https://linux22.com/image/587516/sed%EF%BC%9A%E5%A6%82%E4%BD%95%E5%9C%A8%E5%8C%B9%E9%85%8D%E8%A1%8C%E7%9A%84%E5%BC%80%E5%A4%B4%E6%8F%92%E5%85%A5%E6%B3%A8%E9%87%8A.png)
我正在尝试编写一个脚本,该脚本每次启动新的 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+
之间的任意数量的空格。)Defaults
requiretty