2012-08-06 113 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命令将帮助你在这里。将文件分成常规块(按大小或行数)更为有用。