Compression 解压缩、编辑、压缩和连接文件

Compression 解压缩、编辑、压缩和连接文件,compression,gzip,concatenation,cat,Compression,Gzip,Concatenation,Cat,我有一堆大的压缩文件,我想连接起来。问题是,未压缩版本的末尾没有换行符,因此如果我尝试将它们组合在一起并对其进行压缩,则一个文件中的最后一行将连接到下一个文件中的第一行(这会导致我使用的软件出错)。 仅仅在每个压缩文件之间插入新行来对它们进行分类是行不通的,因为我认为gzip会检测到新行字符,并认为它是“尾随垃圾” for f in *.gz; do (cat "${f}"; echo) >> all.gz; done; gzip -d all.gz gzip: all.gz:

我有一堆大的压缩文件,我想连接起来。问题是,未压缩版本的末尾没有换行符,因此如果我尝试将它们组合在一起并对其进行压缩,则一个文件中的最后一行将连接到下一个文件中的第一行(这会导致我使用的软件出错)。 仅仅在每个压缩文件之间插入新行来对它们进行分类是行不通的,因为我认为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等执行相同的操作


有什么建议吗?

您不需要反复解压缩。只需使用gzip压缩一字节的新行字符,并将其连接到大型gzip文件之间

echo | gzip > newline.gz
cat file1.gz newline.gz file2.gz newline.gz file3.gz ... > file.gz
这将是一个21字节的文件,你为每一行插入,但既然你说你的其他文件都很大,那就没关系了