将长输入拆分为多个文本文件

时间:2009-03-05 09:53:16

标签: linux

我有一些代码会在输出中产生无限数量的行。因此,我无法将这些值存储在单个输出文件中。

相反,我将输出文件拆分为更多文件。我根据索引号拆分文件。现在我的疑问是我不知道我的文件将有多少个数字。那么是否可以将文件拆分为不同的输出而不提供索引?例如:

  • m.txt中的前100,000行
  • 从100,001到n.txt
  • 的下一个200,000

5 个答案:

答案 0 :(得分:1)

如果您不需要根据文件名找到特定行,则可以根据文件大小拆分输出。将行写入m1.txt直到下一行使其大于1MB;然后移动到下一个文件 - m2.txt。

答案 1 :(得分:1)

split(1)似乎正是您工作的工具。

答案 2 :(得分:0)

生成具有正在运行的索引的文件。从打开开始,例如m_000001.txt。将固定的nuber行写入该文件。关闭文件。打开下一个文件,例如m_000002.txt,然后继续。

确保不会使磁盘溢出是一项需要单独完成的保养任务。在这里可以想到备份,压缩,文件轮换等等。

答案 3 :(得分:0)

您可能希望将logrotate用于此目的。它有很多选项:查看手册页。

以下是手册页的介绍:

"logrotate  is  designed to ease administration of systems that generate
large numbers of log files.  It allows automatic rotation, compression,
removal, and mailing of log files.  Each log file may be handled daily,
weekly, monthly, or when it grows too large."

答案 4 :(得分:0)

写作时分裂的4种方法:

A)修正了字符数(大小)

B)修正了行数

C)修正前的时间间隔

D)在调用写入之前固定一个函数的计数器

根据这些拆分,您可以命名输出文件。