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