sed + 如何使用缩进附加行

sed + how to append lines with indent

我使用以下 sed 命令来附加行:

       rotate 1
       size 1k

在单词 missingok 之后

美学上的小问题是 "rotate 1" 不像其他行那样对齐

# sed '/missingok/a      rotate 1\n    size 1k' /etc/logrotate.d/httpd

 /var/log/httpd/*log {
       missingok
rotate 1
       size 1k
       notifempty
       sharedscripts
       delaycompress
       postrotate
           /sbin/service httpd reload > /dev/null 2>/dev/null || true
       endscript
}

有人建议如何缩进 missingok 字符串下的字符串 "rotate 1"?

原始文件

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
 }

显然第一个字符序列必须转义

sed '/missingok/a\trotate 1\n\tsize 1k' /etc/logrotate.d/httpd

只需使用 \ 即可转义 space。

sed '/missingok/a\ \ \ \ \ \ rotate 1\n\ \ \ \ size 1k' /etc/logrotate.d/httpd

始终在实际修改之前进行测试。 当它与您的 bash/shell 配合良好时,添加 -i 以编辑文件 in-place :)

p.s。与前一个答案几乎相同。如问题所述,logrotate conf 文件使用 space 缩进,因此得到了这个答案。不要为使用 space 还是制表符而烦恼。