使用7zip解压缩在Unix中压缩的文件

时间:2016-03-05 07:55:06

标签: excel unix compression gzip 7zip

我的目标是将Unix进程创建的文件作为excel文件发送给自己。所以我使用了以下命令来实现它。

tr -d '\t' < PROGRAM_CREATED_FILE | sed -e 's/\\//g' | awk 'BEGIN{FS=">"; OFS="\t"} '{$1=$1}1' > file.xls
gzip -9 file.xls
echo "test mail" | sendxchange -a "file.xls.gz" -s "Report" my_mail_id

在我的邮箱上收到文件后,我将其保存在Windows机器中。我尝试使用7zip提取存档。它试图在file.xls中提取并说出数据错误。文件已损坏

需要帮助。

由于

1 个答案:

答案 0 :(得分:1)

您的压缩文件是二进制文件而不是Mail希望发送的ASCII文件。在发送之前,您可以uuencodebase64-encode,例如:

gzip -9 < file.xls | uuencode -m file.xls.gz > file.xls.gz
... sendxchange -a "file.xls.gz" ...

使用上面的-m提供base64编码,并将结果留在uuencoding

在Windows端,您需要再次解码文件 - 您可以使用Microsoft的certutil工具(如果您使用base64编码)或SourceForge的Unix实用程序。

通过FTP传输时,请务必先设置BIN模式,否则您可能会以ASCII模式传输,这对二进制文件不利,因为它会将某些行尾字符转换为愚蠢的Windows CR / LF组合,可能会出现在你的二进制文件中转换 - 这不是你想要的。