У меня есть файл, содержащий несколько строк. Я хочу разделить файл на n файлов. Неважно, сколько строк присутствует в каждом файле. Мне просто нужны конкретные файлы no.of (скажем, 5). здесь проблема заключается в том, что никакие строки в исходном файле не изменяются. Поэтому мне нужно рассчитать количество строк, а затем просто разделить файлы на 5 частей. Если возможно, мы должны отправить каждый из них в разные каталоги.Как разбить файл на n из частей
ответ
В Linux есть split
команда,
split --lines=1m /path/to/large/file /path/to/output/file/prefix
выход фиксированного размера кусков ВВОДА к PREFIXaa, PREFIXab, ...; размер по умолчанию - 1000 строк, а по умолчанию PREFIX - «x». Без INPUT или INPUT - прочитайте стандартный ввод.
...
-l, --lines = ЧИСЛО положить ЧИСЛО строк в выходной файл
...
Вы бы вычислить фактический размер шпагате заранее.
Это разбивается на строки или байты? –
здесь размер файла также меняется ежедневно .. Так что мне нужен общий ответ, где мы не должны использовать ни размер, ни число. –
Мне нужно написать сценарий оболочки для этого. Может ли кто-нибудь помочь мне с этим –
Предполагая, что вы обрабатываете текстовый файл, а затем wc -l
, чтобы определить общее количество строк и split -l
, чтобы разделить на указанное количество строк (всего/5 в вашем случае). Это работает в UNIX/Mac и Windows (если у вас установлено cygwin)
Я могу придумать несколько способов сделать это. То, что вы будете использовать, сильно зависит от данных.
Строки фиксированной длины: Найдите размер файла, прочитав это запись каталога и разделить на длину линии, чтобы получить количество строк. Используйте это, чтобы определить, сколько строк в файле.
Файлы должны иметь примерно одинаковое количество строк. Снова прочитайте размер файла из записи в каталоге. Прочитайте первые N строк (N должно быть небольшим, но разумной частью файла) для вычисления средней длины строки. Вычислите приблизительное количество строк на основе размера файла и прогнозируемой средней длины строки. Это предполагает, что длина линии следует нормальному распределению. Если нет, настройте свой метод на случайные выборки строк (с помощью seek() или чего-то подобного). Перемотайте файл после вашего среднего значения, затем разделите его на основе прогнозируемой длины строки.
Прочтите файл дважды. Первый раз подсчитывает количество строк. Второй раз разделил файл на нужные части.
EDIT: Использование сценария оболочки (в соответствии с вашими комментариями), рандомизированного версия # 2 будет трудно, если не написал небольшую программу, чтобы сделать это для вас. Вы должны иметь возможность использовать ls -l
, чтобы получить размер файла wc -l
, чтобы подсчитать точное количество строк и head -nNNN | wc -c
, чтобы рассчитать среднюю длину линии.
В bash вы можете использовать команду split
, чтобы разбить ее на основе количества желаемых линий. Вы можете использовать команду wc
, чтобы выяснить, сколько строк требуется. Вот wc
в сочетании с split
в одну строку.
Например, разделить onepiece.log
на 5 частей
split -l$((`wc -l < onepiece.log`/5)) onepiece.log onepiece.split.log -da 4
Это будет создавать файлы, такие как onepiece.split.log0000
...
Примечание: Баш деление округляется, так что если есть остаток там будет быть файлом 6-й части.
** split -da 4 -l $ (('wc -l
отличное улучшение, @grasshopper – Flowpoke
этот ответ более краток, чем два [более высокие вопросы] (http://stackoverflow.com/questions/7764755/unix-how-to-split- a-file-to-equal-parts-without-break-individual-lines) в stackoverflow и askubuntu. –
- 1. Как разбить диапазон на N частей
- 2. Как разбить строку на N частей?
- 3. Как разбить вектор на n разных частей в MATLAB?
- 4. Как лучше всего разбить файл на N частей с M избыточными частями, так что любой N из N + M частей достаточно, чтобы восстановить его?
- 5. Как разбить последовательность на k однородных частей?
- 6. Как разбить строку на несколько частей?
- 7. C#: разбиение массива на n частей
- 8. Как разбить String на основе \ r \ n
- 9. Как разбить строку на несколько частей в python?
- 10. разбить строку в определенном количестве частей (Haskell)
- 11. Как разбить строку на n-ое вхождение?
- 12. Как разбить строку на n-ом разделителе?
- 13. Как разбить словарь на «n» части
- 14. как разбить число на группы из n цифр
- 15. Как разбить массив на группу из n элементов?
- 16. Как разбить строку и удалить пробелы из частей?
- 17. Разделить коллекцию объектов на n частей
- 18. Perl: как разбить файл?
- 19. Пролог - разделение списка на N частей
- 20. Как разбить файл на python?
- 21. Разделение объекта на N количество равных частей
- 22. Разделение изображения на N числа равных частей
- 23. Перегородки n на k частей с ограничениями
- 24. Как разбить строку на фиксированное количество частей в Python?
- 25. как разбить большое изображение на 8 равных частей в android
- 26. Как разбить строку начальной загрузки на 5 равных частей?
- 27. Perl: Как разбить файл
- 28. Как разбить бинарный файл на разные кадры
- 29. Как просто извлечь ведущие N частей пути?
- 30. Как я могу разбить файл на определенное количество частей в Perl? (On Unix)
С помощью чего? Инструмент, язык программирования, скрипт ...? –
Windows, Linux? На каких языках у вас есть? –
Я должен сделать это в UNIX –