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

问题描述 投票:0回答:2

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

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

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

我收到“文件结尾意外”错误。即使我使用Linux机器下载文件,也会出现相同的错误。

[当我不通过终端(或一行)进行gzip压缩时,一切正常。

为什么所有命令都在一行中时为什么会失败?

linux sh gzip
2个回答
1
投票

当您使用>时,过程的输出将被重定向,并且以后不能由管道使用。您有两个选择:

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

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

  2. processing | gzip > output.csv.gz
    

    这将压缩您的进程的输出[[in-line,并将其直接写入输出文件,而无需将未压缩的输出存储在中间文件中。


0
投票
您应该删除> output.csv

您可以:

    使用管道:|或:
  • 重定向到文件
  • 对于相同的流(标准输出)

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

  • © www.soinside.com 2019 - 2024. All rights reserved.