2013-07-21 23 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

相關問題