Sed: remplacement des chiffres


9

J'essaie d'écrire des scripts d'installation pour l'installation / la mise à niveau d'Ubuntu. J'ai du mal à réparer logrotate.d:

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

Je veux changer rotate nnnpour rotate 99. Il doit fonctionner pour que nnn ait un nombre quelconque de chiffres (normalement 1 ou 2), sans affecter la postrotateligne.

J'ai essayé ces deux mais je n'ai pas non plus ce dont j'ai besoin (et j'ai testé avec nnn étant 1,2 ou 3 chiffres).

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

Réponses:



4

rotate[0-9]*remplace rotatesuivi de zéro ou plusieurs chiffres, ce qui correspond à la fin de postrotate. rotate[0-9]remplace un seul chiffre. De plus, vous manquez l'espace après rotate. Je pense que cela fait ce que vous voulez; il gère également les lignes en retrait:

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

Ajoutez l' -ioption à sedsi vous souhaitez modifier le fichier en place.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.