gzip:使用 gzip 时文件意外结束
gzip: unexpected end of file when using gzip
我必须使用我的 Linux 机器处理文件。
当我尝试将输出写入 csv 文件然后将其压缩到同一行脚本中时:
processing > output.csv | gzip -f output.csv
我收到 'unexpected end of file' 错误。即使我使用 Linux 机器下载文件,我也会遇到同样的错误。
当我不通过终端(或单行)进行 gzip 压缩时,一切正常。
为什么命令都在一行中会这样失败?
你应该删除 > output.csv
您可以:
- 使用管道:
|
或:
- 重定向到一个文件
对于相同的流(标准输出)
您可以使用 2>errors.txt
将错误从 stderr 重定向到文件,否则它们将显示在屏幕上
当您使用 >
运算符重定向进程的 IO 时,它的输出之后不能被管道使用(因为不再有 "output" 可以通过管道传输)。您有两个选择:
processing > output.csv &&
gzip output.csv
将程序未处理的输出写入文件 output.csv
,然后在第二个任务中压缩此文件,将其替换为 output.gz
。根据数据量,这可能不可行(存储要求是完整的未压缩输出加上压缩后的大小)
processing | gzip > output.csv.gz
这将压缩进程的输出在线并将其直接写入输出文件,而不将未压缩的输出存储在中间文件中。
我必须使用我的 Linux 机器处理文件。
当我尝试将输出写入 csv 文件然后将其压缩到同一行脚本中时:
processing > output.csv | gzip -f output.csv
我收到 'unexpected end of file' 错误。即使我使用 Linux 机器下载文件,我也会遇到同样的错误。
当我不通过终端(或单行)进行 gzip 压缩时,一切正常。
为什么命令都在一行中会这样失败?
你应该删除 > output.csv
您可以:
- 使用管道:
|
或: - 重定向到一个文件
对于相同的流(标准输出)
您可以使用 2>errors.txt
将错误从 stderr 重定向到文件,否则它们将显示在屏幕上
当您使用 >
运算符重定向进程的 IO 时,它的输出之后不能被管道使用(因为不再有 "output" 可以通过管道传输)。您有两个选择:
processing > output.csv && gzip output.csv
将程序未处理的输出写入文件
output.csv
,然后在第二个任务中压缩此文件,将其替换为output.gz
。根据数据量,这可能不可行(存储要求是完整的未压缩输出加上压缩后的大小)processing | gzip > output.csv.gz
这将压缩进程的输出在线并将其直接写入输出文件,而不将未压缩的输出存储在中间文件中。