按日期拆分文件

时间:2012-08-06 15:07:25

标签: date csv split

我有一个2 GB的CSV文件,其中有几列和几百万行(包括格式为2010-12-15的日期列)。我希望将此CSV拆分为按日期排列在文件夹中的较小CSV(例如,2010年12月15日的所有条目都位于名为20101215的文件夹中)。

我对这个东西很新,但我知道分裂命令。你们能指出我正确的方向吗?

提前致谢!

1 个答案:

答案 0 :(得分: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文件中。

这不太理想。例如我们浏览每个日期的输入文件。我假设数据是常规的,并且日期字符串(例如2012-08-06)没有出现在您的数据的其他位置(或者具有会破坏上述脚本的字符,例如空格和/或{{1 }})。

我认为/命令不会帮助你。将文件拆分为常规块(按大小或行数)更有用。