Linux substitua ^ M $ por $ em csv

0

Estou trabalhando na migração do MDaemon para o Google Apps. Como parte desse processo, estou exportando os contatos e calendários de todos os nossos usuários para arquivos CSV e, em seguida, lendo-os em um script em Perl e importando-os para o Google Apps.

Aqui está uma amostra de exportação de calendário mostrada no vi com ": set list" em.

"Event 1","05/05/2009","0:00:00","05
/05/2009","23:59:00","True","True","05/04/2009","23:45:00",,,,"",,,"False","Normal",0$
"Event 2","09/21/2009","11:00:00","09/21/2009","11:30:00","False","False",,,"[email protected]","",,"Notes from=A0^M$
Vendor=A0",,"","False","Normal",1$
"Event 3","04/05/2010","0:00:00","04/05/2010","23:59:00","True","True","04/04/2010","23:45:00",,,,"",,,"False","Normal",0$
"Event 4","05/05/2010","0:00:00","05/05/2010","23:59:00","True","True","05/04/2010","23:45:00",,,,"",,,"False","Normal",0$

Estou tendo problemas com as linhas que terminam em ^ M $, que devem ser finais de linha incorporados. Meu analisador CSV Text :: CSV_XS está analisando-os como várias linhas em vez de uma única linha. Como posso substituir o ^ M $ com ^ M? Qualquer outra sugestão é bem vinda.

Aqui está meu código de análise:

 my $csv = Text::CSV_XS->new ({ binary => 1, eol => $/,auto_diag => 1 }) or
 die "Cannot use CSV: ".Text::CSV_XS->error_diag ();
 open my $fh, "<", $username . "-calendar.csv" or die $!;
 while (my $row = $csv->getline ($fh)) {
        print STDERR "NEW LINE: " . Dumper($row) . "END NEW LINE\n";
     push @rows, $row;
     }
 $csv->eof or $csv->error_diag ();
 close $fh;

UPDATE 1: Aqui está a saída de "arquivo" sobre este arquivo:

Non-ISO extended-ASCII English text, with very long lines, with CRLF, LF line terminators

    
por dkwiebe 22.05.2012 / 20:28

1 resposta

0

Eu consegui trabalhar com s/\r\r\n/<br>/g para substituir as quebras de linha incorporadas por um html <br> .

    
por 07.06.2012 / 22:47

Tags