我正在尝试为安装/升级 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
。
我已经尝试过这两个,但都没有满足我的需要(并且我测试了 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]
仅替换一位数字。此外,您还缺少 后面的空格rotate
。我认为这符合你的要求;它还处理缩进线:
sudo sed 's/^\( *rotate *\)[0-9][0-9]*/\1 99/' /etc/logrotate.d/ufw
如果您想就地更改文件,请添加该-i
选项。sed