Recorte uma parte específica de uma coluna de um arquivo csv [closed]

1

Eu tenho que processar um csv contendo cerca de 15 colunas, uma das quais contém um timestamp particular que inclui milissegundos. Quando vou inserir este csv em um banco de dados, recebo um erro devido a esse formato de hora específico. Não consigo tocar nas outras colunas, mas preciso truncar a saída da sexta coluna e criar um novo arquivo.

Um exemplo é:

73306758;Da Lavorare;;20300;RESTAROC;10/10/2014 16:37:22.425;PALAGIANO;TA;PUGLIA;;Libretto;IDENTITA;AI2000000;OK;DOC Valido;0;0;CCCMNN85X26X251X;OK;CF Attribuito;0;0
    
por fabiousaol85 11.10.2014 / 15:54

1 resposta

2

Supondo que você queira remover todos os casos de : seguidos pelos números da quarta coluna (você diz o sexto na sua pergunta, mas é o quarto no seu exemplo), você pode usar um destes:

  1. awk

    awk -F';' -v OFS=";" '{sub(/\.[0-9]*$/,"",$6);}1;' file.csv > new.csv
    
  2. Perl (isso altera o arquivo atual e mantém o original como file.csv.bak )

    perl -i.bak -F';' -ane '$F[5]=~s/\.[0-9]*$//; print join ",", @F' file.csv
    
por 11.10.2014 / 16:04