0

我有一堆要连接的大型压缩文件。问题是,未压缩版本的末尾没有换行符,所以如果我尝试将它们放在一起并压缩它们,一个文件中的最后一行将连接到下一个文件中的第一行(这会引发我正在使用的软件错误)。只是在每个压缩文件之间插入一个换行符来处理它们是行不通的,因为我认为 gzip 检测到换行符并认为它是“尾随垃圾”之后的所有内容。例如

for f in *.gz; do (cat "${f}"; echo) >> all.gz; done;
gzip -d all.gz 

gzip: all.gz: decompression OK, trailing garbage ignored

我想做的是这样的:

unzip file1.gz | add a newline char| gzip the output >> output.gz

然后对 file2.gz、file3.gz 等执行相同的操作。

有什么建议么?

4

1 回答 1

2

您不需要解压缩和重新压缩。只需使用 gzip 压缩一个字节的换行符,然后在您的大 gzip 文件之间连接它。

echo | gzip > newline.gz
cat file1.gz newline.gz file2.gz newline.gz file3.gz ... > file.gz

这将是您为每个换行插入的 21 字节文件,但既然您说您的其他文件很大,那应该没关系。

于 2013-04-25T14:53:15.683 回答