Em vez de caracteres de término de linha, seu script produz "\r"
caracteres que movem o cursor para a posição mais à esquerda, mas não avançam uma linha. Portanto, todas as informações estão sendo substituídas repetidas vezes. Não consigo imaginar como isso pode acontecer com o literal "\n"
no código - você tem certeza de que o código que você postou produz a saída? Qual sistema operacional você está? Você pode postar um hexdump do arquivo de entrada?