我想pipestreamsplit
。 我知道字节stream(非常大,来自networking)有多大,我想要分割创build大小相等的N个文件,而不用将线分成两半。 有没有可能做到这一点。 就像是:
cat STREAM | split $SIZE_OF_STREAM $NUMBER_OF_FILES_TO_PRODUCE
我找不到通过文档实现的方法,如果显而易见,我很抱歉,但是我找不到它。
哦,好像,Mac上的split
工具(也许BSD)是一个选项短:(
在Linux上,有-C
选项,它可以让你说每一行的块数是多less字节。 或者以更简单的方式说 – 如果你通过cat file | split -C 1000
cat file | split -C 1000
,它将创build最多1000字节的整行,这与初等math给我一个简单的方法来实现我想要的块。
我只是简单地将行数分开 ,因为除了最后一行之外的所有文件几乎相等。
export LINE_COUNT=100,000 cat $STREAM | split -l $LINE_COUNT
你可以用$ SIZE_OF_STREAM除以$ NUMBER_OF_FILES_TO_PRODUCE来进行math计算,但是只要设置一个行数就可以让你有90%的path使所有文件基本相等,除非你的行长度是以非常规的方式分配的。
我已经链接到在线文档,但手册页与OS X一起发货,所以你可以看到,分割有一个字节截断以及截断线。
创build将出来的文件STREAM:
echo "1234\n5678" > xfile
现在将分裂它
for i in $(seq 0..`wc -c xfile|awk '{print $1}'`); do let a=`expr $i \* 2`; dd if=xfile of=file$i bs=1 count=2 skip=$a; done
它会给你一个固定大小的2个字节的文件日志和名称file1,file2,file3 ….