我在一个磁盘空间有限的共享服务器上,我有一个超级扩展为巨大文件的gz文件,比我的文件更多。如何通过“部分(一次说10 MB)提取”部分“,并处理每个部分,而不是暂时提取整个部分!
不,这只是一个超级巨大的压缩文件,而不是一组文件...
答案 0 :(得分:11)
如果您使用(Unix / Linux)shell工具执行此操作,可以使用gunzip -c
解压缩到stdout,然后将dd
与skip
和{{1}一起使用}只复制一个块的选项。
例如:
count
然后跳过= 1,跳过= 2,等等。
答案 1 :(得分:1)
不幸的是,我不知道现有的Unix命令正是您所需要的。您可以使用任何语言的小程序轻松完成,例如在Python中,cutter.py
(任何语言当然都可以这样做):
import sys
try:
size = int(sys.argv[1])
N = int(sys.argv[2])
except (IndexError, ValueError):
print>>sys.stderr, "Use: %s size N" % sys.argv[0]
sys.exit(2)
sys.stdin.seek((N-1) * size)
sys.stdout.write(sys.stdin.read(size))
现在gunzip <huge.gz | python cutter.py 1000000 5 > fifthone
将文件fifthone
放入恰好一百万字节,跳过未压缩流中的前四百万字节。