我有一个包含近 2.5 亿个字符的大文件。现在,我想把它分成几个部分,每个部分包含 3000 万个字符(所以前 8 个部分将包含 3000 万个字符,最后一个部分将包含 1000 万个字符)。另一点是,我想在下一部分的开头包含每个文件的最后 1000 个字符(意味着第 1 部分的最后 1000 个字符附加在第 2 部分的开头 - 因此,第 2 部分包含 3000 万个 1000 个字符,依此类推)。任何人都可以帮助我如何以编程方式(使用 Java)或使用 Linux 命令(以快速方式)进行操作。
最佳答案
一种方法是使用常规的 unix 命令拆分文件,并在前面加上前一个文件的最后 1000 个字节。
首先拆分文件:
split -b 30000000 inputfile part.
然后,对于每个部分(忽略最远的部分,从前一个的最后 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
最后一步是重新组合文件:
cat part.* >> newfile
由于没有解释为什么需要重叠,我只是创建它然后将其丢弃。
关于java - 拆分文件 - Java/Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11180078/