【问题标题】:Append one line at the top of huge gzip file在巨大的 gzip 文件顶部添加一行
【发布时间】:2015-09-26 04:09:58
【问题描述】:

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

我正在考虑创建一个带有标题行的 gzip 文件,然后使用 zcat 组合头文件和日志文件。只是想检查是否有更好/优雅/有效的方法来做到这一点。

【问题讨论】:

    标签: linux shell logging


    【解决方案1】:

    两个 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。 (我还没有确认它是否有效。)
    • 该代码会将新行添加到解压缩的大文件中,然后重新压缩。我现在就编辑它。
    • 谢谢。它有帮助! :)
    【解决方案2】:

    这应该可行:

    gzip < newlineoftext > newfile.gz
    cat oldfile.gz >> newfile.gz
    

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

    【讨论】:

      猜你喜欢
      • 2018-12-08
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      相关资源
      最近更新 更多