索引巨大的文本文件

goz*_*wei 7 c++ linux windows matlab

我有一个巨大的文本文件(超过100演出),有6列数据(制表符作为分隔符).在第一列中,我有整数值(设置中有2500个不同的值).我需要根据第一列中的值将此文件拆分为多个较小的文件(请注意,行未进行排序).这些较小的文件中的每一个都将用于在matlab中准备绘图.

我只有8 GB的内存.

问题是如何有效地做到这一点?有任何想法吗?

odr*_*drm 5

使用bash:

cat 100gigfile | while read line; do
  intval="$( echo "$line" | cut -f 1)"
  chunkfile="$( printf '%010u.txt' "$intval" )"
  echo "$line" >> "$chunkfile"
done
Run Code Online (Sandbox Code Playgroud)

这会将您的100 gig文件拆分为(如您所说)2500个根据第一个字段的值命名的单个文件.您可能需要根据自己的喜好调整printf的格式参数.

  • @Marcelo - 您可以在设计高效解决方案时尝试在后台运行它。想打赌哪个程序先完成? (2认同)