あるファイルから列を抽出し、列を印刷せずに別のファイルに移動する方法は?

あるファイルから列を抽出し、列を印刷せずに別のファイルに移動する方法は?

data.csvという2GBのcsvファイルがあります。 data.csvから5つの列を抽出し、新しいファイル(好ましくは新しいcsvファイル)に移動したいと思います。

どうすればいいですか?実際に列を印刷せずにこれを実行できるawkコマンドはありますか?

答え1

特別な贅沢がない単純な場合には、csv次のcutようにすることができます。

cut -d, -f1-5 file
1,2,3,4,5
q,w,e,r,t
a,s,d,f,g
z,x,c,v,b

または連続していない単一フィールドの場合

cut -d, -f1,3,7 file
1,3,7
q,e,u
a,d,j
z,c,m

必要な新しい.csvファイルにリダイレクトします。

答え2

おおよそ次のようになります。

csv 1 3 4 6 7 <data.csv >new.csv
  • もちろん、列1 3 4 6と7を仮定します! RHELとクローンの場合、コマンドはcsvEPELにあり、正常にインストールできます。 Ubuntuと友達の場合は、以下を試してください。
csvtool col 1,3,4,6,7 data.csv >new.csv

たとえば、

$ cat data.csv
1,2,3,4,5,6,7,8,9,0
q,w,e,r,t,y,u,i,o,p
a,s,d,f,g,h,j,k,l
z,x,c,v,b,n,m
$ csvtool col 1,2,3,4,5 data.csv >new.csv
$ cat new.csv 
1,2,3,4,5
q,w,e,r,t
a,s,d,f,g
z,x,c,v,b

代わりに。

関連情報