2016-09-19 40 views
1

私はサイズが4.5GBのCSVを持っています。このCSVを列に基づいて異なるファイルに分けたいと思います。例:大きなCSVファイルを複数のファイルに分割する

File1.csv: Cols(1,35,36,37)  
File2.csv: Cols(1,127,129,135) 
File3.csv: Cols(1,285,287,299,311) 
File4.csv: Cols(1,2,4,5,6,12,13,14) 

**注記列1はID列であり、全体を通じて必要です。

本質的には、328の列を含むこのCSVを、Mysqlのインポート用のより小さいCSVに分割したいと考えています。

私は簡単に複数のawkコマンドでこれを行うことができましたが、4.5GB-6GBファイル全体を各コマンドで再処理したくありません。助言がありますか?

答えて

2

のawk内の異なるファイルへprintredirect outputすることができます: のawk::1:これは、残念ながらエラースロー

awk '{print $1, $35, $36, $37 > "file1.csv"} \ 
    {print $1, $127, $129, $135 > "file2.csv"} \ 
    {print $1, $285, $287, $299, $311 > "file3.csv"}\ 
    {print $1, $2, $4, $5, $6, $12, $13, $14 > "file4.csv"}' inFile.csv 
+0

'' 予期しない文字を – Mrd05d

+0

@ Mrd05d:あなたは '...'を他の2つのファイルの 'print'コマンドで置き換えることになっています。 –

+0

ああ、そうですね、あたしは怠け者で、もう入力したくない気がしました。あなたはawkのリダイレクトの要点を得てそこから取り出したいと考えていました。 :) – JNevill

関連する問題