Cortar una parte específica de una columna de un archivo csv

Cortar una parte específica de una columna de un archivo csv

Tengo que procesar un csv que contiene aproximadamente 15 columnas, una de las cuales contiene una marca de tiempo particular que incluye milisegundos. Cuando voy a insertar este csv en una base de datos, aparece un error debido a este formato de hora en particular. No puedo tocar las otras columnas, pero necesito truncar la salida de la sexta columna y crear un archivo nuevo.

Un ejemplo es:

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

Respuesta1

Suponiendo que desea eliminar los casos :seguidos de números de la cuarta columna (dice la sexta en su pregunta pero es la cuarta en su ejemplo), puede usar uno de estos:

  1. awk

    awk -F';' -v OFS=";" '{sub(/\.[0-9]*$/,"",$6);}1;' file.csv > new.csv
    
  2. Perl (esto cambia el archivo real y mantiene el original como file.csv.bak)

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

información relacionada