sed 's/rotate [0-9]\+/rotate 99/'
Eu estou tentando escrever alguns scripts de instalação para quando eu instalar / atualizar o Ubuntu. Estou com problemas para corrigir logrotate.d :
/var/log/ufw.log
{
rotate 7
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
Eu quero alterar rotate nnn para rotate 99 . Ele deve funcionar para que nnn seja qualquer número de dígitos (normalmente 1 ou 2), mas não afeta a linha postrotate .
Eu tentei esses dois, mas também não o que eu preciso (e testei com nnn sendo 1,2 ou 3 dígitos).
sudo sed 's/rotate[0-9]*/rotate 99/' /etc/logrotate.d/ufw
sudo sed 's/^rotate[0-9]/rotate 99/' /etc/logrotate.d/ufw
sed 's/rotate [0-9]\+/rotate 99/'
rotate[0-9]* substitui rotate seguido por zero ou mais dígitos, o que corresponde ao final de postrotate . rotate[0-9] substitui apenas um dígito. Além disso, você está perdendo o espaço depois de rotate . Eu acho que isso faz o que você quer; também lida com linhas recuadas:
sudo sed 's/^\( *rotate *\)[0-9][0-9]*/ 99/' /etc/logrotate.d/ufw
Adicione a opção -i a sed se você quiser alterar o arquivo.