正常来说一般分割文件只需要用shell自带的split
split -l 2000 Clean.short.fa -d -a 4 test
split -l 2000 Clean.short.fa -d -a 4 test --verbose
这个是最简单的分割方式
但是当达到一定数量级的时候,,比如220g的时候,分割的效率非常慢,比如我试着按照1百万行分割文件,结果竟然要11个小时
如果单核的话实在太慢,能不能使用多核加速?但谷歌找了半天,竟然没有找到合适的方式去加速(也有,但是是用java写的,暂时不是很会java),去多核分割,那么只能自己动手了,而sed是个很好的工具
sed按照行的位置进行提取
sed -n '1,1000000p' Clean.short.fa > test
循环的方式
for i in `seq 1 30 100`;do echo $i;val=`expr $i + 30`;echo $val;done
1
31
31
61
61
91
91
121
那么只需要进行&和wait多核运行就行了,理论上可行,但是实际上能不能成?毕竟我已经按照前面的简单方式在分割了,就留给以后探索吧。
网友评论