0

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

我对这些东西相当陌生,但知道 split 命令。你们能指出我正确的方向吗?

提前致谢!

4

1 回答 1

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命令不会在这里为您提供帮助。将文件拆分为常规块(按大小或行数)更有用。

于 2012-08-06T15:15:34.493 回答