我有一个大小为30 Gigs的巨大gzip文件,我需要从该文件中提取一个特定的行到一个新文件而不解压缩巨型文件,比如300021行。有没有办法做到这一点?如果有,怎么样?
答案 0 :(得分:0)
没有。除非为此目的专门准备了gzip文件,或者你已经为gzip文件构建了一个索引,这需要解压缩整个事件一次以构建它。你能做的最好的事情就是将它解压缩到你正在寻找的线上,然后在你获得线后停止。至少那时你不需要为整个未压缩的gzip文件留出空间,但平均而言,它仍然需要解压缩整个事件所需的一半。
您可以在zran.c中找到为gzip文件构建此类索引的示例。获得索引后,可以在索引点开始解压缩,为此选择它们之间的跨度。在您的情况下,您还希望在行开始处包含一个索引,该索引将映射每个数字在未压缩数据中作为偏移量开始的位置。