我有一堆我要连接的大型压缩文件。问题是,在未压缩版本的末尾没有换行符,所以如果我尝试将它们拼凑在一起并对它们进行压缩,则一个文件中的最后一行将连接到下一个文件的第一行(这使用我正在使用的软件引发错误。 只是在每个压缩文件之间插入一个新行来捕获它们不起作用,因为我认为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等等做同样的事情。
有什么建议吗?
答案 0 :(得分:2)
您无需解压缩和重新压缩。只需使用gzip压缩单字节换行符,并在大型gzip文件之间连接。
echo | gzip > newline.gz
cat file1.gz newline.gz file2.gz newline.gz file3.gz ... > file.gz
这是一个为每个新行插入的21字节文件,但由于你说你的其他文件很大,这应该没关系。