我有文本文件:file.conf
### Option: LogFile
# Name of log file.
# If not set, syslog is used.
#
# Mandatory: no
# Default:
# LogFile=
### Option: LogFileSize
# Maximum size of log file in MB.
# 0 - disable automatic log rotation.
#
# Mandatory: no
# Range: 0-1024
# Default:
# LogFileSize=1
我试过:
sed --posix -e '/bLogFileb/{:a;n;/^ *$/!ba;iLogFile=/tmp/log1.log' -e '}' file.conf
对于那些后跟空行的选项块,这是正常工作的。
这样做的问题是:在最后一个块的末尾,如果没有新行存在,那么它不会插入该行。这里带有文本日志文件大小。
如何处理这个问题。
-
要在匹配行后添加:
$ sed '/#.*LogFile=/aLogFile=/tmp/log1.log' 1.cat
会做:
# LogFile= LogFile=/tmp/log1.log
-
在第一个空行之前添加:
$ sed '/^$/iLogFile=/tmp/log1.log' 1.cat
会做:
# LogFileSize=1 LogFile=/tmp/log1.log