Sed: sostituzione delle cifre


9

Sto cercando di scrivere alcuni script di installazione per quando installo / aggiorno Ubuntu. Sto riscontrando problemi con la correzione logrotate.d:

/var/log/ufw.log
{
rotate 7
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
    reload rsyslog >/dev/null 2>&1 || true
endscript
}

Voglio passare rotate nnna rotate 99. Deve funzionare affinché nnn sia un numero qualsiasi di cifre (normalmente 1 o 2), ma non influisce sulla postrotatelinea.

Ho provato questi due, ma nemmeno quello di cui ho bisogno (e ho provato con nnn di 1,2 o 3 cifre).

sudo sed  's/rotate[0-9]*/rotate 99/' /etc/logrotate.d/ufw
sudo sed  's/^rotate[0-9]/rotate 99/' /etc/logrotate.d/ufw

Risposte:



4

rotate[0-9]*sostituisce rotateseguito da zero o più cifre, che corrisponde alla fine di postrotate. rotate[0-9]sostituisce solo una cifra. Inoltre ti manca lo spazio dopo rotate. Penso che questo faccia quello che vuoi; gestisce anche linee rientrate:

sudo sed 's/^\( *rotate *\)[0-9][0-9]*/\1 99/' /etc/logrotate.d/ufw

Aggiungi l' -iopzione a sedse desideri modificare il file in posizione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.