2012-08-06 85 views
0

我有一個2 GB的CSV文件,其中有幾列和幾百萬行(包括格式爲2010-12-15的日期列)。我期待將此CSV分成更小的CSV,並按日期排列在文件夾中(例如,2010年12月15日的所有條目都位於名爲20101215的文件夾內)。按日期分割文件

我對這個東西還相當陌生,但我知道拆分命令。你們能否指引我朝着正確的方向發展?

在此先感謝!

回答

0

根據您的數據是如何經常和清潔是,這樣的事情可能就足夠了:

for i in `cut -d, -f 2 <csv | sort -u`; do 
    mkdir $i && grep $i csv > $i/csv 
done 

(假設你的數據是文件csv中,你的最新信息是在第二列)

這是幹什麼的? cut將第二列中的日期過濾掉,並通過sort -u運行,以創建唯一日期的排序列表。然後我們遍歷這個(for命令),併爲每個條目我們mkdir一個相應的目錄,並且grep結果出來到該目錄中的一個csv文件。

這並不理想。例如我們grep通過每個日期的輸入文件。我假設數據是正常的,並且日期字符串(例如2012-08-06)不會出現在數據的其他位置(或者包含會使上述腳本變得空虛和/或/)的字符。

我不認爲split命令將幫助你在這裏。將文件分成常規塊(按大小或行數)更爲有用。