Исходный файл dhcp.leases размер примерно 200 мегабайт или около 18млн записей в формате:lease 10.210.100.254 {
starts 0 2012/03/11 09:52:27;
ends 5 2012/03/16 09:52:27;
tstp 5 2012/03/16 09:52:27;
cltt 0 2012/03/11 09:52:27;
binding state free;
hardware ethernet 00:11:22:33:44:66;
uid "\001\000\021\"3Df";
set vendor-string = "MSFT 5.0";
}
lease 10.8.234.253 {
starts 4 2011/06/02 11:56:20;
ends 2 2011/06/07 11:56:20;
tstp 2 2011/06/07 11:56:20;
cltt 4 2011/06/02 11:56:20;
binding state free;
hardware ethernet 00:22:33:44:55:27;
uid "\001\000\0363%\000'";
}
Задача убрать все старые записи. Делаю запрос, для того чтобы убить 2011 год:
sed -n ':s;/ends . 2011/{:l;n;/}/{bs};bl};p' dhcp.leases
На выходе получаю у 2011 года одну лишнюю строку "starts 4 2011/06/02 11:56:20;"
lease 10.210.100.254 {
starts 0 2012/03/11 09:52:27;
ends 5 2012/03/16 09:52:27;
tstp 5 2012/03/16 09:52:27;
cltt 0 2012/03/11 09:52:27;
binding state free;
hardware ethernet 00:11:22:33:44:66;
uid "\001\000\021\"3Df";
set vendor-string = "MSFT 5.0";
}
lease 10.8.234.253 {
starts 4 2011/06/02 11:56:20;
}
Как в рамках существующего sed запроса убить строчку, которая выше регулярного выражения?
т.е. хотелось бы получить
lease 10.8.234.253 {
}
Или, чтобы данная запись просто изчезла из dhcp.leases
Заранее спасибо за помощь.