sed:如何在一段文本后插入行?

时间:2014-02-12 07:03:20

标签: linux bash 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 '/\bLogFile\b/{:a;n;/^ *$/!ba;i\LogFile=/tmp/log1.log' -e '}' file.conf

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

问题是:如果没有新行,则在最后一个块结束时,它不会插入该行。这里有文字LogFileSize。

如何处理。

1 个答案:

答案 0 :(得分:0)

  1. 在匹配线后添加:

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

    将会:

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

    $ sed  '/^$/i\LogFile=/tmp/log1.log'  1.cat
    

    将会:

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