我在格式为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

关于shell - 根据命令行中的列拆分csv文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50517053/

10-09 14:03