Schneiden Sie einen bestimmten Teil einer Spalte aus einer CSV-Datei aus

Schneiden Sie einen bestimmten Teil einer Spalte aus einer CSV-Datei aus

Ich muss eine CSV-Datei mit etwa 15 Spalten verarbeiten, von denen eine einen bestimmten Zeitstempel mit Millisekunden enthält. Wenn ich diese CSV-Datei in eine Datenbank einfügen möchte, erhalte ich aufgrund dieses bestimmten Zeitformats einen Fehler. Ich kann die anderen Spalten nicht bearbeiten, muss aber die Ausgabe der 6. Spalte kürzen und eine neue Datei erstellen.

Ein Beispiel ist:

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

Antwort1

Angenommen, Sie möchten alle Fälle von :gefolgt von Zahlen aus der 4. Spalte entfernen (in Ihrer Frage sagen Sie die 6., in Ihrem Beispiel ist es jedoch die 4.), können Sie eine der folgenden Optionen verwenden:

  1. awk

    awk -F';' -v OFS=";" '{sub(/\.[0-9]*$/,"",$6);}1;' file.csv > new.csv
    
  2. Perl (dadurch wird die aktuelle Datei geändert und das Original bleibt erhalten file.csv.bak)

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

verwandte Informationen