2016-04-20 3 views
0

Я хотел бы сделать патч в команду в Linux раскомментировать «#auth»Linux СЭД заменить слово в общем виде

Оригинальный файл

#%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 

Но я думаю, что это слишком долго. Есть ли лучший способ сделать это (более общий)? Я не хочу указывать номер строки, чтобы заменить его, потому что если кто-то изменил файл, сценарий не будет работать нормально.

Например: ". # Идент * достаточно * pam_wheel.so доверие use_uid"

Поиск по ключевым словам, если, замените это слово "#auth" к "аутентификации ", а затем добавьте более позднюю формулировку в строке

ответ

3

С помощью GNU sed найдите опцию -i, которая позволяет модифицировать на месте, а затем привязать регулярное выражение. Например:

sed -i '/^#auth.*pam_wheel/s/^#//' INPUTFILE 

будет искать строки, начинающиеся с «#auth», которые включают в себя «pam_wheel» позже на линии и заменить «#» в начале ни с чем.

+0

Предполагая, что пользователь является «root» или имеет повышенные привилегии .. – sjsam

+0

Спасибо! оно работает –

Смежные вопросы