Sed:数字を置き換える


9

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したいですrotate 99。nnnが任意の桁数(通常は1または2)であっても機能しますが、postrotate回線には影響しません。

私はこれら2つを試しましたが、必要なものはどちらも実行していません(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

回答:



4

rotate[0-9]*rotate後ろに一致する0個以上の数字が続く置換postrotaterotate[0-9]1桁のみを置き換えます。さらに、後のスペースがありませんrotate。これはあなたが望むことをするものだと思います。インデントされた行も処理します。

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

ファイルをインプレースで変更-iするsed場合は、オプションを追加します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.