Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 将大文本文件划分为短文件_Algorithm_Perl_Text Files - Fatal编程技术网

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

Algorithm 将大文本文件划分为短文件,algorithm,perl,text-files,Algorithm,Perl,Text Files,我想把一个大的txt文件分成几个短的txt文件,比如我有file.txt,它有700 MB,我想把它分成7个100 MB的txt文件 我该怎么办?有没有办法在不打开文本文件和更改文本文件内容的情况下对其进行分割?如果这个问题有已知的算法,请分享。 谢谢简单的方法- 获取文件长度,决定块大小 查看要创建的文件数-n=文件长度/块大小。如果有余数,则文件数为n+1 以读取模式打开文件 以写模式创建文件。可能会附加后缀1..n以指示片段 写入数据块字节数或剩余字节如果剩余

我想把一个大的txt文件分成几个短的txt文件,比如我有file.txt,它有700 MB,我想把它分成7个100 MB的txt文件

我该怎么办?有没有办法在不打开文本文件和更改文本文件内容的情况下对其进行分割?如果这个问题有已知的算法,请分享。 谢谢

简单的方法-

获取文件长度,决定块大小

查看要创建的文件数-n=文件长度/块大小。如果有余数,则文件数为n+1

以读取模式打开文件

以写模式创建文件。可能会附加后缀1..n以指示片段

写入数据块字节数或剩余字节如果剩余<数据块大小,请关闭此文件

对n个片段重复4-5次

如果您在unix上


拆分-b100m文件名部分将文件名拆分为parta、partb、partc等

仅在适用于您的环境和需要的情况下,标准Unix解决方案是使用拆分:


-C强制拆分为按行拆分,而不是按字节/字符拆分。如果您希望按特定字节进行拆分,请使用-b。如果您希望同时按大小和行数进行拆分,在某些情况下需要使用-b,并且在Windows环境中,您可以使用名为GSplit的程序。我曾经有过这个问题,它对我起了作用。您可以通过谷歌搜索下载。

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

如果文件大小不能被块大小平均整除,您建议最后一个片段使用什么?@Garry-Yeah..但这应该很容易检测,只要OP能够实现上述:p。。在严肃的音符上-纠正它感谢纠正。处理尾部状况对我来说一直很麻烦。
split -C 100M input.txt