解压缩,编辑,压缩和连接文件

时间:2013-04-25 12:56:21

标签: compression gzip concatenation cat

我有一堆我要连接的大型压缩文件。问题是,在未压缩版本的末尾没有换行符,所以如果我尝试将它们拼凑在一起并对它们进行压缩,则一个文件中的最后一行将连接到下一个文件的第一行(这使用我正在使用的软件引发错误。 只是在每个压缩文件之间插入一个新行来捕获它们不起作用,因为我认为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等等做同样的事情。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您无需解压缩和重新压缩。只需使用gzip压缩单字节换行符,并在大型gzip文件之间连接。

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

这是一个为每个新行插入的21字节文件,但由于你说你的其他文件很大,这应该没关系。