2016-04-15 105 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) –