【发布时间】:2015-09-26 04:09:58
【问题描述】:
我有一个巨大的 gzip 文件 (~400MB)。我想在文件的开头附加一行文本。
我正在考虑创建一个带有标题行的 gzip 文件,然后使用 zcat 组合头文件和日志文件。只是想检查是否有更好/优雅/有效的方法来做到这一点。
【问题讨论】:
我有一个巨大的 gzip 文件 (~400MB)。我想在文件的开头附加一行文本。
我正在考虑创建一个带有标题行的 gzip 文件,然后使用 zcat 组合头文件和日志文件。只是想检查是否有更好/优雅/有效的方法来做到这一点。
【问题讨论】:
两个 gzip 压缩文件连接到一个文件实际上是一个有效的 gz 文件。
试试看。
压缩你想要添加的第一行,然后将两行合并到第三行。
print "My newline" | gzip -c > /tmp/smallzip.gz
cat /tmp/smallzip.gz mybigfile.gz > newbigfile.gz
这将节省解压缩大 gz 文件、预先添加行并重新压缩的时间和 CPU,这将是:
(
echo "My newline"
zcat bigfile.gz
) | gzip -c > newbifile.gz
【讨论】:
cat 而不是zcat。 (我还没有确认它是否有效。)
这应该可行:
gzip < newlineoftext > newfile.gz
cat oldfile.gz >> newfile.gz
(因为,正如另一个答案已经指出的那样,两个连接在一起的 gzip 文件是一个有效的 gzip 文件。)
【讨论】: