Помогите мне с удалением некоторого блока из файла конфигурации dhcp с помощью sed. файл выглядит следующим образом:sed delete block
host dev1 {
host-identifier option agent.circuit-id "test1:418";
fixed-address xxx.xxx.xxx.xxx;
option routers xxx.xxx.xxx.xxx;
option subnet-mask xxx.xxx.xxx.xxx;
}
host host2{
host-identifier option agent.circuit-id "test2-:5";
fixed-address xxx.xxx.xxx.xxx;
option routers xxx.xxx.xxx.xxx;
option subnet-mask xxx.xxx.xxx.xxx;
}
Я должен удалить блок для хоста, найденного схема идентификатора. Я сделал это с помощью команды:
sed -e '/^host\s*\S*\s*{\s*/ { N; /\s*test1:418/ { N; /[^host]/ { N; /[^host]/ { N; /[^host]/ { N; /[^host]/d}}}}}' -e '/^$/d' /path/to/file
Но это не кажется приемлемым вообще ... :(
'[^ host]' соответствует одному символу, который не является 'h',' o', 's' или' t'. Каждая строка в вашем примере содержит хотя бы один символ, который не является одним из них, поэтому каждая строка соответствует этому условию. – tripleee
Многие диалекты 'sed' также не поддерживают расширения Perl, такие как' \ s' и т. Д. – tripleee