2017-02-23 44 views
0

У меня очень большой файл на моем Linux-сервере (в настоящее время более 10 ГБ), и содержимое продолжает добавлять в конец файла.Как обработать динамически растущий большой файл в Linux

У меня есть еще один скрипт, который должен обрабатывать этот файл около 1000 строк за раз. Каков наилучший способ получить строки из этого файла и работать на одном и том же.

Я думаю о команде sed, чтобы вырезать линии. Но это лучший подход?

+0

Возможно, вы захотите взглянуть на этот родственный вопрос: http://stackoverflow.com/questions/42396561/monitor-a-log-file-using-tail-f/42398092#42398092 – codeforester

+0

@codeforester спасибо за link. Но я не уверен, как реализовать это для огромного файла, используя сценарий оболочки. –

+0

Это точно моя точка зрения. Вы гораздо лучше используете более продвинутый язык, например Ruby, Python или Perl. Я решил такие проблемы с Perl/C в прошлом. Баш определенно не является выбором. – codeforester

ответ

0

Поскольку файл, который будет контролировать это обычный текстовый файл (не бинарный), вы могли бы сделать

tail -f my_big_fat_file | my_fancy_processing_script 

Вы не получите его в 1000-строчных куски, но ваш сценарий обработки может накапливаться линии и начать обработку до тех пор, пока не соберет их достаточно.

+0

Кажется, что это не работает. Я получаю немедленно полученную команду. –

+0

Существует две возможности, из-за которых эти команды немедленно выходят (и в каждом случае вы получите сообщение об ошибке): (1) Файл не существует в то время, когда вы вызываете команду, или (2) Ваш скрипт закрывает STDIN. Я не вижу, как эта команда может завершиться инертно. – user1934428

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