sed: 数値の変更

sed: 数値の変更

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 nnnnnnは任意の数(通常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

答え2

rotate[0-9]*ゼロ個以上の数字が続く置換は のrotate末尾と一致しますpostrotaterotate[0-9]数字を1つだけ変更してください。また、末尾の空白がありませんrotate。私はこれがあなたが望むことをやっていると思います。インデントされた行も処理します。

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

ファイルを現在の場所から変更するには、この-iオプションを追加します。sed

関連情報