2013-04-25 136 views
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,等等等等

任何建议?

回答

2

您不需要解压缩和重新压缩。只需用gzip压缩一个字节的新行字符,然后连接大的gzip文件即可。

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

这将是您插入每个新行一个21字节的文件,但既然你说你的其他文件都很大,这不应该的问题。

+0

这是一个好主意,并且效果非常好。 非常感谢。 – GrahamE 2013-04-25 15:10:59