【发布时间】:2017-07-09 07:16:37
【问题描述】:
我的测试文件 test.txt 如下:
destination mailerr { file("/var/log/mail.err" fsync(yes)); };
log { source(src); filter(f_mailerr); destination(mailerr); };
#
# and also all in one file:
#
destination mail { file("/var/log/mail"); };
log { source(src); filter(f_mail); destination(mail); };
destination mailwarn { file("/var/log/mail.warn"); };
log
{
#source(src);
filter(f_mailwarn); destination(mailwarn); };
我想使用 shell 脚本删除下面的行
log
{
#source(src);
filter(f_mailwarn); destination(mailwarn); };
这行可能是不同的结构,比如
log{ source(src); filter(f_mailwarn); destination(mailwarn); };
(or)
log
{
source(src);
filter(f_mailwarn);
destination(mailwarn);
};
(or)
log
{ source(src); filter(f_mailwarn); destination(mailwarn); };
(or)
# log { source(src); filter(f_mailwarn); destination(mailwarn); };
};
这些是可能性。我正在使用 sed 命令:
sed '/log/{:a;/destination(mailwarn);.*}/d;N;ba}' test.txt
但它会删除所有行,因为第一行它自己“日志”来了。这个文件中有很多“日志”,所以如何使用 shell 脚本删除特定的行。
【问题讨论】:
-
我认为这个问题需要澄清一下。您是否只是尝试根据要删除的行列表从文件中删除行,您是否尝试删除整个
log函数,或者您是否尝试做其他我不理解的事情? -
@Jeffrey Cash 我想删除包含“destination(mailwarn);”的日志功能