4

У меня большой текстовый файл, который мне нужно разделить на несколько меньших (менее 1 МБ) файлов. Кажется, что split это то, что я хочу здесь.

Однако, если я попробую следующее (используя 900k в качестве предела, чтобы дать некоторый буфер перед жестким ограничением в 1MB):

split -a 2 -b 900k total.sql createtables_

Это сделает каждую часть точно 900k (кроме последней части), скорее всего, разделив строки в местах, где он разделяет файл.

Итак, есть ли способ сделать его только разделенным на границах линий? Другими словами, должен ли он сделать куски как можно ближе (без перебора) к пределу, указанному в аргументе -b , гарантируя, что он разбивается только на границах строк?

Или единственная опция - использовать опцию -l для разделения на разделение на основе количества строк, и просто использовать метод проб и ошибок, чтобы найти параметр, который ограничивает все файлы?

Или split не является правильным инструментом для использования?

2 ответа2

3

split -l - лучшее, что вы можете сделать на Mac OS X. С GNU coreutils вы можете использовать split -C 900k . Вы можете установить GNU coreutils на OSX, например, через Darwion Ports или Fink или MacPorts .

1

Не знаете, какую версию split вы используете, но пробовали ли вы использовать параметр --line-bytes=BYTES ? В моей системе его также можно ввести как -C BYTES .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .