将大文本文件划分为短文件

时间:2011-12-31 20:35:29

标签: algorithm perl text-files

我想将一个大的txt文件分割(或拆分)为短txt文件,例如我有file.txt并且它有700 MB,我想把它分成七(100 MB) txt文件。

我该怎么办?有没有办法划分它而不打开文本文件并更改文本文件的内容?如果有针对此问题的已知算法,请分享它们。 谢谢

5 个答案:

答案 0 :(得分:7)

万一它适用于您的环境和需求,标准的Unix解决方案是使用split

split -C 100M input.txt

-C强制拆分为逐行而不是byte / char。如果您希望拆分特定字节,请使用-b

答案 1 :(得分:2)

简单方法 -

  1. 获取文件长度,确定块大小

  2. 查看您要创建的文件数量 - (n =文件长度/块大小)。如果有任何余数,则文件数为n + 1.

  3. 以读取模式打开文件。

  4. 以写入模式创建文件。 (可能附加后缀1..n表示片段)

  5. 将chunk数量的字节(或剩余字节,如果余数< chunk size)写入文件,关闭此文件。

  6. 对于n个片段重复4-5。

答案 2 :(得分:2)

如果您使用的是unix

split -b100m filename part会将文件名分成parta,partb,partc等

答案 3 :(得分:0)

如果您希望同时按大小和行数(在某些情况下需要)进行拆分,并且它在Windows环境中,则可以使用名为GSplit的程序。我曾经有过这个问题,它对我有用。你可以谷歌下载。

答案 4 :(得分:0)

Perl发行版包含一个拆分实用程序,如果您碰巧不在Unix上。它使用-l进行分割。