Это может сработать для вас (GNU sed):
sed -E '/^#/d;/^eth/!{H;$!d};x;s/\n/ /gp;x;h;d' file
Существует три сценария: строки, начинающиеся с #
, строки, начинающиеся с `eth, и другие строки.
Если текущая строка является комментарием, удалите его.
Если текущая строка не начинается eth
, добавьте ее в область удержания (HS) и удалите ее, если это не последняя строка.
В противном случае текущая строка начинается eth
или является последней строкой, поэтому поменяйте местами на HS и, если в нем есть какие-либо переводы строк, замените их пробелами и напечатайте результат. Вернитесь к пространству шаблона и замените HS текущей строкой и удалите текущую строку, если только она не является последней строкой файла, в этом случае напечатайте ее.