按日期列值拆分文件

时间:2016-04-15 00:11:07

标签: file date csv awk split

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

到目前为止,我的方法是

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

    grep [date value] file > mmddyyyy.csv
    
  3. 上述解决方案的唯一缺点是,如果[date value]存在于该行的任何位置,它将被拾取并且我可能最终会在两个或更多文件中存储一条记录。

    我知道单个值(字符串/数字)awk可以像

    那样直接进行
    awk -F"\t" '{print >> ($14".csv");}' $1
    

1 个答案:

答案 0 :(得分:1)

听起来你只需要:

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

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