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

так что вам нужна последние 450.000 строка из файла раскола до 9 файлов. правильно? – jm666

+1

или ... просто ... переформулируйте вопрос. не очень понятно, что вы действительно хотите, потому что если вы разделитесь на 50k строк, вы можете использовать эти 9 файлов, что хотите и удалить оставшиеся ... так что, возможно, вы хотите что-то другое - просто напишите лучший вопрос. – jm666

+0

Отказаться от требования разрешить файлу расти. Переместите файл в сторону, чтобы новый контент накапливался для завтра в новом файле. Теперь расщепление сегодняшнего контента из статического файла в основном является простым. – tripleee

ответ

2

Используйте команду split (manpage).

Например:

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

Проблема в том, что если я использую раскол в первый раз, мой файл меняется каждый день. –

+0

@AlexanderOvalle Похоже, что мой ответ не поможет. У вас есть довольно сложная проблема. – trojanfoe

Смежные вопросы