Linux

如何從一個文件中提取列並移動到另一個文件而不列印列?

  • June 16, 2022

我有一個名為 data.csv 的 2GB csv 文件。我想從 data.csv 中提取 5 列並移動到一個新文件(最好是一個新的 csv 文件)。

我怎樣才能做到這一點?是否有一個 awk 命令允許我在不實際列印列的情況下執行此操作?

類似於以下內容:

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

反而。

對於沒有任何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文件。

引用自:https://unix.stackexchange.com/questions/706430