У меня большой файл содержит около 250 миллионов символов. Теперь я хочу разбить его на части каждого, содержит 30 миллионов символов (так что первые 8 частей будут содержать 30 миллионов, а последняя часть будет содержать 10 миллионов символов). Еще один момент заключается в том, что я хочу включить в начале следующей части последние 1000 символов каждого файла (это означает, что последние 1000 символов первой части присоединяются к началу второй части, поэтому вторая часть содержит 30 миллионов 1000 символов и т. Д.). Может ли кто-нибудь помочь мне, как это сделать программно (используя Java) или с помощью команд Linux (быстро).Split File - Java/Linux
ответ
В одну сторону заключается в использовании регулярных команд unix для разделения файла и добавления последних 1000 байтов из предыдущего файла.
Первый разделить файл:
split -b 30000000 inputfile part.
Затем для каждой части (игнорируя farst сделать новый файл, начиная с последних 1000 байт из предыдущего:
unset prev
for i in part.*
do if [ -n "${prev}" ]
then
tail -c 1000 ${prev} > part.temp
cat ${i} >> part.temp
mv part.temp ${i}
fi
prev=${i}
done
Перед сборкой мы снова итерации по файлам, игнорирование первого и выброс первых 1000 байт:
unset prev
for i in part.*
do if [ -n "${prev}" ]
then
tail -c +1001 ${i} > part.temp
mv part.temp ${i}
fi
prev=${i}
done
La й шаг, чтобы собрать файлы:
cat part.* >> newfile
Поскольку не было никакого объяснения, почему перекрытие было необходимо, я просто создал его, а затем бросил ее.
Просто используйте с соответствующими параметрами команды split или csplit.
Возможно, вы захотите объединить эти программы с помощью более сложного сценария оболочки или с помощью какого-либо другого языка сценариев, чтобы дать им соответствующие аргументы (в частности, чтобы справиться с вашим перекрывающимся требованием). Возможно, вы можете комбинировать их с другими утилитами (например, grep
или head
или tail
или sed
или awk
и т. Д.).
У любого из них есть перекрывающиеся части, подобные OP? –
Спасибо. Но нет ничего о шине по количеству символов и добавлении последних 1000 символов. – Arpssss
Вы можете сделать это, используя класс BreakIterator и его статический метод getCharacterInstance(). Он возвращает новый экземпляр BreakIterator для разрывов символов для локали по умолчанию.
Вы также можете использовать getWordInstance(), getLineInstance() .. сломать слова, строки ... и т.д.
например:
BreakIterator boundary = BreakIterator.getCharacterInstance();
boundary.setText("Your_Sentence");
int start = boundary.first();
int end = boundary.next();
For more detail look at this link:
http://docs.oracle.com/javase/6/docs/api/java/text/BreakIterator.html
Вы можете попробовать это. Я должен использовать read/mode в первый раз, поскольку файл не существовал вначале. Вы можете использовать только чтение, как это предлагает этот код.
long start = System.nanoTime();
long fileSize = 3200 * 1024 * 1024L;
FileChannel raf = new RandomAccessFile("deleteme.txt", "r").getChannel();
long midPoint = fileSize/2/4096 * 4096;
MappedByteBuffer buffer1 = raf.map(FileChannel.MapMode.READ_ONLY, 0, midPoint + 4096);
MappedByteBuffer buffer2 = raf.map(FileChannel.MapMode.READ_ONLY, midPoint, fileSize - midPoint);
long time = System.nanoTime() - start;
System.out.printf("Took %.3f ms to map a file of %,d bytes long%n", time/1e6, raf.size());
Это работает на окне 7 x64 с 4 ГБ памяти.
Took 3.302 ms to map a file of 3,355,443,200 bytes long
- 1. ASP File Extension Split
- 2. Java split xml file
- 3. Camel Split File and Exchange
- 4. apache camel split csv file
- 5. Pandas - split large excel file
- 6. Split xls file with Python
- 7. CSV file split values all null
- 8. Powershell random shuffle/split large text file
- 9. ш - Split File на несколько файлов
- 10. regex to split line (csv file)
- 11. Awk split file дает неполные строки
- 12. Perl Split File В строки и переменные
- 13. Apache Common Compress - Split Zip file
- 14. nodejs read file и split with \ u001
- 15. Bash split file on double newline
- 16. MS SQL SERVER TSQL: FILE EXPORT AUTOMATIC SPLIT
- 17. Split 23mb kml file to 3 even pieces
- 18. Что касается Java Split Command CSV File Parsing
- 19. Что касается Java Split Command Parsing Csv File
- 20. Чтение в String From File, Split by Tab в Ruby
- 21. Batch - split html file при совпадении строки найден
- 22. CSV Large File Split для импорта в phpMyAdmin
- 23. Split File При позиционном состоянии значения с AWK
- 24. split ("+") и split ("") разные
- 25. Mandrill file file file file
- 26. PHP file file file
- 27. Android file file file
- 28. File File file save
- 29. JQuery/Javascript & Split внутри split?
- 30. Populating Array from File file
Зачем вам перекрытие? Если вам это не нужно, вы можете просто использовать команды split и cat. –
Мне очень любопытно узнать, что такое прецедент для перекрытия кусков. –
@ RogerLindsjö, Нет. Мне нужно совпадение. – Arpssss