根据命令行中的列拆分csv文件



我在文件中有一些形式的csv形式的数据:

ID,DATE,EARNING
1,12 May 2018,5
1,13 May 2018,15
2,12 May 2018,25

我想将其拆分为多个文件,以便file_1_May_report包含:

ID,DATE,EARNING
1,12 May 2018,5
1,13 May 2018,15

以及另一个包含以下内容file_2_May_report文件:

ID,DATE,EARNING
2,12 May 2018,25

我试过:

awk -F, '{print >> $1}' input.csv 

但是,我只得到一个只有一条记录的文件 1,即输入文件中的最后一条记录。如何让它根据 ID 拆分为多个文件?

您可以使用此awk

awk -F, 'NR==1{hdr=$0; next} !seen[$1]++{fn="file_" $1 "_May_report"; print hdr > fn} {print > fn}' input.csv

或者使用更具可读性的格式:

awk -F, 'NR == 1 {
hdr = $0
next
}
!seen[$1]++ {
fn = "file_" $1 "_May_report"
print hdr > fn
}
{
print > fn
}' input.csv

最新更新