Как я разделяю файл на n никакие из частей

У меня есть файл contining некоторые никакие из строк. Я хочу файл разделения в n no.of файлы с конкретными именами. Это не имеет значения сколько строки, существующей в каждом файле. Я просто хочу конкретные no.of файлы (скажите 5). здесь проблемой не являются никакие из строк в исходном файле, продолжают изменяться. Таким образом, я должен вычислить, никакие из строк затем просто не разделяют файлы на 5 частей. Если возможный мы должны отправить каждого из них в различные каталоги.

28
задан new person 7 July 2010 в 11:45
поделиться

3 ответа

Предположим, вы обрабатываете текстовый файл, затем wc -l , чтобы определить общее количество строк, и split -l для разделения на указанное количество строк (всего / 5 в вашем случае). Это работает в UNIX / Mac и Windows (если у вас установлен cygwin )

6
ответ дан 28 November 2019 в 03:09
поделиться

В linux существует split команда,

split --lines=1m /path/to/large/file /path/to/output/file/prefix

выводящая куски INPUT фиксированного размера в PREFIXaa, PREFIXab, ...; размер по умолчанию - 1000 строк, а PREFIX по умолчанию - 'x'. При отсутствии INPUT или когда INPUT равен -, читайте стандартный ввод.

...

-l, --lines=NUMBER поместить ЧИСЛО строк в выходной файл

...

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

6
ответ дан 28 November 2019 в 03:09
поделиться

Я могу придумать несколько способов сделать это. То, что вы будете использовать, во многом зависит от данных.

  1. Строки имеют фиксированную длину: найдите размер файла, прочитав его запись в каталоге, и разделите на длину строки, чтобы получить количество строк. Используйте это, чтобы определить, сколько строк в файле.

  2. В файлах должно быть примерно одинаковое количество строк. Снова прочтите размер файла из записи в каталоге. Прочтите первые N строк (N должно быть небольшим, но разумной частью файла), чтобы вычислить среднюю длину строки. Рассчитайте приблизительное количество строк на основе размера файла и прогнозируемой средней длины строки.Это предполагает, что длина линии соответствует нормальному распределению. Если нет, настройте свой метод на случайную выборку строк (с помощью функции seek () или чего-то подобного). Перемотайте файл назад после того, как получите среднее значение, а затем разделите его в зависимости от предполагаемой длины строки.

  3. Прочтите файл дважды. Первый раз посчитайте количество строк. Второй раз разбиваем файл на нужные части.

РЕДАКТИРОВАТЬ : Используя сценарий оболочки (согласно вашим комментариям), рандомизированная версия №2 будет сложной, если вы не написали небольшую программу, которая сделает это за вас. Вы должны иметь возможность использовать ls -l , чтобы получить размер файла, wc -l , чтобы подсчитать точное количество строк, и head -nNNN | wc -c для вычисления средней длины строки.

0
ответ дан 28 November 2019 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: