在巨大的gzip文件顶部添加一行

5

我有一个巨大的gzip文件(~400MB),我想在文件开头附加一行文本。

我考虑创建带有标题行的gzip文件,然后使用zcat将标题文件和日志文件组合在一起。只是想检查是否有更好/优雅/高效的方法来完成这个任务。

2个回答

10

把两个被压缩的文件拼接成一个文件实际上是一个有效的gz文件。

试一下吧。

先将您想要添加的第一行压缩,然后使用cat命令将两个文件连接到第三个文件中。

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。(我还没有确认它是否有效。) - Keith Thompson
将新行添加到解压缩的大文件前面,然后重新压缩。我现在会进行编辑。 - Abe Crabtree
谢谢。它帮了我大忙! :) - aadarshsg

5
这应该可以正常工作:
gzip < newlineoftext > newfile.gz
cat oldfile.gz >> newfile.gz

(因为,正如另一个回答已经指出的那样,两个被串联在一起的gzip文件是一个有效的gzip文件。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接