2016-04-15 65 views
0

我有一个csv文件,它有89列,它包含多个日期的数据。日期栏是第59列。日期格式为mm/dd/yy。我想实现的是创建一个文件mmddyyyy.csv,因此每个文件将只包含一个数据日期。按日期列值拆分文件

到目前为止,我的做法是

  1. 获取从文件中的所有不同的日期
  2. 对于每一个不同的日期

    grep [date value] file > mmddyyyy.csv 
    

上述解决方案的唯一缺点是,如果[date value]存在于该行的任何地方,它将被拾取,并且我可能会在两个或更多个文件中结束一个记录。

我知道一个单一值(字符串/数字)的awk能做到直截了当像

awk -F"\t" '{print >> ($14".csv");}' $1 
+1

编辑你的问题,包括一个[mcve] –

回答

1

这听起来像所有你需要的是:

awk -F, '{split($59,t,"/"); print > (t[1] t[2] "20" t[3] ".csv")}' file 

,但没有样品的输入和预期输出这是一个猜测。如果您不使用GNU awk,则可能需要在适当的时候输入close()以避免同时打开太多文件。

+0

谢谢埃德,这完全解决了我的问题 –

+0

不客气。请参阅[当某人回答我的问题时该怎么办?](http://stackoverflow.com/help/someone-answers) –