URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7380
[ Назад ]

Исходное сообщение
"Чистка файла"

Отправлено syncer , 24-Май-08 12:49 
Есть потребность искать в файле блок такого вида:

some value {
...
...
...
}
и удалять по какому нибудь признаку
, с помощью чего или как можно полностью удалить такой блок?


Содержание

Сообщения в этом обсуждении
"Чистка файла"
Отправлено phpcoder , 24-Май-08 23:17 
>, с помощью чего или как можно полностью удалить такой блок?

С помощью sed'а. Я бы привел пример, если бы вы привели входные и выходные данные.



"Чистка файла"
Отправлено syncer , 24-Май-08 23:22 
>>, с помощью чего или как можно полностью удалить такой блок?
>
>С помощью sed'а. Я бы привел пример, если бы вы привели входные
>и выходные данные.

Вобще-то есть потребность чистить dhcpd.leases

lease 192.168.94.254 {
  starts 4 2008/05/22 14:23:41;
  ends 4 2008/05/22 14:25:12;
  tstp 4 2008/05/22 14:25:12;
  binding state free;
  hardware ethernet 00:16:d4:62:e5:08;
  uid "\001\000\026\324b\345\010";
}
Мне надо вытирать такие вот блоки по ИП

причем между "{ }" не всегда одинаковое количество строк


"Чистка файла"
Отправлено phpcoder , 24-Май-08 23:50 
>[оверквотинг удален]
>  starts 4 2008/05/22 14:23:41;
>  ends 4 2008/05/22 14:25:12;
>  tstp 4 2008/05/22 14:25:12;
>  binding state free;
>  hardware ethernet 00:16:d4:62:e5:08;
>  uid "\001\000\026\324b\345\010";
>}
>Мне надо вытирать такие вот блоки по ИП
>
>причем между "{ }" не всегда одинаковое количество строк

Как-то так:

sed -n ':s;/lease 192.168.94.254/{:l;n;/}/{n;bs};bl};p' file


"Чистка файла"
Отправлено syncer , 25-Май-08 01:12 
>[оверквотинг удален]
>>  hardware ethernet 00:16:d4:62:e5:08;
>>  uid "\001\000\026\324b\345\010";
>>}
>>Мне надо вытирать такие вот блоки по ИП
>>
>>причем между "{ }" не всегда одинаковое количество строк
>
>Как-то так:
>
>sed -n ':s;/lease 192.168.94.254/{:l;n;/}/{n;bs};bl};p' file

Огромное и человеческое Тебе СПАСИБО!