Como são todos os espaços ou todas as guias, você pode canalizá-lo para
sed 'H;$!d;g;: m;/\n[^\n[:blank:]]/!s/\n[^\n]/\n/g;t m;s/.//'
Isso é gnu sed (não acho que outros sed s suportam [\n] ). Ele funciona anexando cada linha ao buffer H old e, em seguida, d , se não for o último ( $! ). Na última linha, copia o conteúdo do espaço de espera sobre o espaço de padrão via g (o conteúdo do espaço de padrão começa com \n ewline agora).
Em seguida, exclui o primeiro caractere em cada linha ( s/\n[^\n]/\n/g ) se nenhuma linha no espaço padrão começar com um espaço não vazio ( /\n[^\n[:blank:]]/! ). Após cada substituição bem-sucedida, ele volta ao rótulo m . Se houver pelo menos uma linha no espaço padrão que comece com um não-branco, apenas removerá a nova linha principal do espaço padrão ( s/.// ) e, em seguida, imprime automaticamente.