我有一个2 GB的CSV文件,其中有几列和几百万行(包括格式为2010-12-15的日期列)。我希望将此CSV拆分为按日期排列在文件夹中的较小CSV(例如,2010年12月15日的所有条目都位于名为20101215的文件夹中)。
我对这个东西很新,但我知道分裂命令。你们能指出我正确的方向吗?
提前致谢!
答案 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 }})。
我认为/
命令不会帮助你。将文件拆分为常规块(按大小或行数)更有用。