2013-04-25 56 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