Моего тестового файла 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); };
Я хочу удалить ниже строк с использованием сценария оболочки
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
Но он удалит всю строку, потому что первая строка его «лог» приходит. Так много «log» приходит в этот файл, поэтому, как удалить конкретные строки, используя сценарий оболочки.
Я думаю, что этот вопрос нуждается в некотором уточнении. Вы просто пытаетесь удалить строки из файла на основе списка строк для удаления, пытаетесь ли вы удалить всю функцию «log», или пытаетесь ли вы сделать что-то еще, что я не понимаю? –
@Jeffrey Cash Я хочу удалить функцию журнала, которая содержит «destination (mailwarn)»; – SSN