Uma maneira com sed :
sed -e '/^---/ {
:1
$!N
s/\n/ /
/---$/!b1
}' <file
Essa abordagem faz o trabalho de maneira direta:
- Se a linha começar com
---, insira o bloco de código - Dentro do bloco de código, criamos um rótulo de loop chamado
1 - Lemos a linha
Next da entrada se a linha atual não for a última linha$ - Substitua a linha de novo
\npor um espaço - Se a próxima linha terminar com
---, quebre!do loop, caso contrário, reinicie o loopb1