如何剪切CSV文件

mai*_*ash 3 linux bash awk cut sed

我有以下CSV文件

 more file.csv

 Number,machine_type,OS,Version,Mem,CPU,HW,Volatge

 1,HG652,linux,23.12,256,III,LOP90,220
 2,HG652,linux,23.12,256,III,LOP90,220
 3,HG652,SCO,MK906G,526,1G,LW1005,220
 4,HG652,solaris,1172,1024,2Core,netra,220
 5,HG652,solaris,1172,1024,2Core,netra,220
Run Code Online (Sandbox Code Playgroud)

请建议如何剪切CSV文件(通过cut或sed或awk命令)

为了获得部分CSV文件

  • 命令需要获取表示我们要从CSV中剪切的字段的值

    根据示例1(值应为6)

例1

在这个例子中,我们从左到右切割了6个字段(在这种情况下,CSV将如下所示)

  Number,machine_type,OS,Version,Mem,CPU

  1,HG652,linux,23.12,256,III
  2,HG652,linux,23.12,256,III
  3,HG652,SCO,MK906G,526,1G
  4,HG652,solaris,1172,1024,2Core
  5,HG652,solaris,1172,1024,2Core
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 7

cut 是你的朋友:

$ cut -d',' -f-6 file
Number,machine_type,OS,Version,Mem,CPU

1,HG652,linux,23.12,256,III
2,HG652,linux,23.12,256,III
3,HG652,SCO,MK906G,526,1G
4,HG652,solaris,1172,1024,2Core
5,HG652,solaris,1172,1024,2Core
Run Code Online (Sandbox Code Playgroud)

说明

  • -d',' 将逗号设置为字段分隔符
  • -f-6根据该分隔符打印到第6个字段.这相当于-f1-6,因为1是默认的.

awk如有必要,还可以制作它:

$ awk -v FS="," 'NF{for (i=1;i<=6;i++) printf "%s%s", $i, (i==6?RS:FS)}' file
Number,machine_type,OS,Version,Mem,CPU
1,HG652,linux,23.12,256,III
2,HG652,linux,23.12,256,III
3,HG652,SCO,MK906G,526,1G
4,HG652,solaris,1172,1024,2Core
5,HG652,solaris,1172,1024,2Core
Run Code Online (Sandbox Code Playgroud)