Не используйте sed для всего, что связано с несколькими строками, просто используйте awk для надежного переносимого решения. Учитывая пример ввода из вопроса, на который вы ссылались , если блоки всегда разделяются пустыми строками:
$ awk -v RS= -v ORS='\n\n' '!/ID: 222/' file
{START-TAG
foo bar
ID: 111
foo bar
END-TAG}
{START-TAG
foo bar
ID: 333
foo bar
END-TAG}
в противном случае:
$ awk '/{START-TAG/{f=1} f{rec=rec $0 ORS} /END-TAG}/{if (rec !~ /ID: 222/) print rec; rec=f=""}' file
{START-TAG
foo bar
ID: 111
foo bar
END-TAG}
{START-TAG
foo bar
ID: 333
foo bar
END-TAG}
Оба этих сценария будет работать с любым awk в любой оболочке на каждом UNIX поле.