CSV ファイルから列の特定の部分を切り取る

CSV ファイルから列の特定の部分を切り取る

約 15 列の csv を処理する必要があります。そのうちの 1 つには、ミリ秒を含む特定のタイムスタンプが含まれています。この csv を DB に挿入しようとすると、この特定の時間形式が原因でエラーが発生します。他の列には手を加えることはできませんが、6 番目の列の出力を切り捨てて新しいファイルを作成する必要があります。

例:

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

答え1

4 列目から数字が続くケースをすべて削除したい場合:(質問では 6 列目と言っていますが、例では 4 列目です)、次のいずれかを使用できます。

  1. awk

    awk -F';' -v OFS=";" '{sub(/\.[0-9]*$/,"",$6);}1;' file.csv > new.csv
    
  2. Perl (実際のファイルを変更し、元のファイルをそのまま保存しますfile.csv.bak)

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

関連情報