我有一个名为 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 和克隆,该命令
csv
位于 EPEL 中,可以按常规方式安装。对于 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
反而。