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 还是制表符而烦恼。
我使用以下 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 还是制表符而烦恼。