sed:如何在文本块后插入行



我有文本文件: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

对于那些后跟空行的选项块,这是正常工作的。

这样做的问题是:在最后一个块的末尾,如果没有新行存在,那么它不会插入该行。这里带有文本日志文件大小。

如何处理这个问题。

  1. 要在匹配行后添加:

    $ sed  '/#.*LogFile=/aLogFile=/tmp/log1.log'  1.cat
    

    会做:

    # LogFile=
    LogFile=/tmp/log1.log
    
  2. 在第一个空行之前添加:

    $ sed  '/^$/iLogFile=/tmp/log1.log'  1.cat
    

    会做:

    # LogFileSize=1
    LogFile=/tmp/log1.log
    

相关内容

  • 没有找到相关文章

最新更新