sed ":a;/\r$/{N;s/\r\n//;b a}"
Isso corresponderá a todas as linhas que tiverem '\r'
no final (seguidas por '\n'
). Nessas linhas, ele primeiro anexará a próxima linha de entrada (enquanto coloca o separador '\n
entre), substituirá o "\r\n"
resultante por uma string vazia e voltará ao início para ver se o novo conteúdo de espaço padrão não acontece por acaso coincidir novamente.
Após o comentário: se você quiser extrair qualquer '\r'
adicional do arquivo, basta adicioná-lo após remover os combos CRLF:
sed ":a;/\r$/{$!N;s/\r\n//;t a};s/\r//g"