2013-07-21 24 views
1

我有一个文件与20.000.000行,每天这个文件被添加或删除了一些行,我需要做一个crontab,我需要每一天获得9个文件的50.000行。在bash中每天提取一个文件的行

例如:

BigFile is my file with 20.000.000 lines. 

,我需要生成9个文件,与线1〜50000的第一个文件,与线50001〜100000的第二文件,所述第三文件中的行100001〜150000 . . .

我不能做一个分裂的第一次,因为我的文件更改所有的日子,以及第二个问题,我有是,如果我第一次得到我的9个文件的第二天,我需要继续进行最后一行使用。

例如,第一天我使用450.000行,然后第二天我需要第一行450001到500000行,第三天我需要使用900001作为我的第一个文件。

分裂不工作,因为如果我使用拆分第一次,文件改变,那么,我有文件不连续第二日

你能帮助我工作吗?

+0

所以你需要从文件分割9个文件的最后450.000线。对? – jm666

+1

或...简单地...重新提出问题。不是很清楚,你真正想要的是什么,因为如果你分割成5万行,你可以使用那9个文件并删除剩余的...所以你可能想要其他的东西 - 只需写出更好的问题。 – jm666

+0

放弃允许文件增长的要求。将文件移到一边,让新内容在明天新文件中累积。现在将基本静态文件中的今天内容分开是一件简单的事情。 – tripleee

回答

2

使用split命令(manpage)。

例如:

$ split -l 50000 /path/to/bigfile 
+0

问题是,如果我第一次使用拆分,我的文件每天都会更改。 –

+0

@AlexanderOvalle看起来我的回答无助于此。你有一个相当复杂的问题需要解决。 – trojanfoe

相关问题