Поскольку мы определились с интервалом
от строки 0 по строку с "def"
то команда(-ы) внутри «{ }» будут выполнены именно для выбранного интервала.
Сама команда «
d»
elete (удалить, перейти к обработке следующей строки).
Внутри «/ /» задается образец поиска (шаблон), при наличии которого будет выполнена команда, идущая за ним. Поскольку шаблон у нас уже есть (мы его использовали задавая интервал «/def/», то его можно не дублировать указывая повторно.
Ещё вариант
sed -z 's/[^\n]*def[^\n]*\n//' test