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.