Назад | Перейти на главную страницу

sed: как вставить комментарий в начало соответствующей строки

Я пытаюсь написать сценарий, который будет комментировать следующую строку в / etc / sudoers каждый раз, когда я запускаю новый экземпляр EC2:

Defaults requiretty

Я предполагаю, что лучший способ сделать это - использовать встроенный поиск и замену sed или поиск и вставку. Проблема в том, что между значениями по умолчанию и requiretty может быть 1+ пробелов / вкладок. Какое эффективное решение sed?

Ответ Джея будет работать практически без изменений с 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+ поймает любое количество пробелов между Defaults и requiretty.)