
Ubuntuをインストール/アップグレードするときに使用するインストールスクリプトを作成しようとしています。問題の解決に問題がありますlogrotate.d
。
/var/log/ufw.log
{
rotate 7
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
rotate nnn
nnnは任意の数(通常1または2)でなければなりませんrotate 99
が、行には影響しませんpostrotate
。
両方を試しましたが、どちらも私の要件を満たしていませんでした(nnnを1、2、または3桁でテストしました)。
sudo sed 's/rotate[0-9]*/rotate 99/' /etc/logrotate.d/ufw
sudo sed 's/^rotate[0-9]/rotate 99/' /etc/logrotate.d/ufw
答え1
sed 's/rotate [0-9]\+/rotate 99/'
http://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html
答え2
rotate[0-9]*
ゼロ個以上の数字が続く置換は のrotate
末尾と一致しますpostrotate
。rotate[0-9]
数字を1つだけ変更してください。また、末尾の空白がありませんrotate
。私はこれがあなたが望むことをやっていると思います。インデントされた行も処理します。
sudo sed 's/^\( *rotate *\)[0-9][0-9]*/\1 99/' /etc/logrotate.d/ufw
ファイルを現在の場所から変更するには、この-i
オプションを追加します。sed