gzip:使用 gzip 时文件意外结束



我必须使用我的Linux机器处理一个文件。

当我尝试将输出写入 csv 文件时,请在同一行脚本中对其进行 gzip 压缩:

processing > output.csv | gzip -f output.csv

我收到"意外的文件结束"错误。即使我使用 Linux 机器下载文件,我也会收到相同的错误。

当我不通过终端(或单行(gzip时,一切正常。

当命令都在一行中时,为什么会这样失败?

你应该删除> output.csv

您可以:

  • 使用管道:|或:
  • 重定向至"文件"诊断树

对于同一流(标准输出(

您可以将错误从 stderr 重定向到带有2>errors.txt的文件,否则它们将显示在屏幕上

当您使用>运算符重定向进程的 IO 时,其输出之后不能被管道使用(因为不再有"输出"要管道(。您有两种选择:

  1. processing > output.csv &&
    gzip output.csv
    

    将程序的未处理输出写入文件output.csv,然后在第二个任务中 gzip 此文件,将其替换为output.gz。根据数据量,这可能不可行(存储要求是完整的未压缩输出加上压缩大小(

  2. processing | gzip > output.csv.gz
    

    这将以内联方式压缩过程的输出并将其直接写入输出文件,而不将未压缩的输出存储在中间文件中。

最新更新