如何在不解压的情况下删除gzip文件的第一行?

Jas*_*ase 2 bash gzip

我有一个大gzip文件,解压速度很慢。如何在不解压整个文件的情况下就地删除第一行?

Yun*_*sch 5

Zip 算法使用已解压缩的内容作为后续内容的查找表。我相信这直接意味着如果删除第一行,它肯定需要重新压缩文件的其余部分,这又意味着需要首先解压缩它。

所以我相信答案是:不是。

深入研究实际实现 zip 算法(准确地说是 Lempel Ziv 压缩算法)的细节,您会发现存在一定大小的数据窗口。
可解压缩的传入数据的最大长度由“前方”窗口的大小确定。还有一个数据可用作已解压缩数据中查找的最大距离,即“后”窗口。
因此,可以仅解压缩压缩数据的一部分,该部分足够大以确保压缩数据的其余部分不会引用其之前的任何内容。即太大,从压缩数据的某个点开始,不再出现对您要删除的内容的引用。然后您可以重新压缩该部分,而无需删除您想要删除的第一行。

但我相信这种方法超出了你的范围。否则你会提供更多信息。

所以我想我会坚持:不。

或者至少:
您必须真正了解 Zip 算法,直到您可以自己实现它。然后进一步了解您正在处理的文件中算法的精确实现。然后了解您正在查看的压缩的精确配置(两个窗口的大小)。
然后花费很大的力气。

详细说明如何做到这一点超出了这里的答案。