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.