Gzip
拆分gz文件並單獨解壓
我有一個很大的 .gz 文件,它本身就是 2.6 GB。由於大小限制,我無法解壓縮它。該文件是一個大文本文件。由於大小限制,我無法完全解壓縮它。我想將它分成 10 個單獨的部分並單獨解壓縮每個部分,以便我可以使用每個單獨的文件:
我的問題是:
- 那可能嗎 ?
- 另外,作為答案的一部分,如果還可以提供命令,因為我不太精通這些命令
謝謝
壓縮格式支持解壓一個由幾個較小的
gzip
壓縮文件拼接而成的文件(解壓後的文件將包含拼接後的解壓數據),但不支持解壓分割後的壓縮文件。假設您希望最終得到解壓縮數據的“切片”,您可以通過將解壓縮數據輸入
dd
多次來解決此問題,每次選擇不同的解壓縮數據切片保存到文件並丟棄其餘部分.在這裡,我使用了一個很小的範例文本文件。我反复解壓縮它(對於大文件需要一些時間),每次我從解壓縮的數據中挑選一個 8 字節的切片。
bs
您也可以這樣做,但對(“塊大小”)使用更大的值。$ cat file hello world 1 2 3 ABC $ gzip -f file # using -f to force compression here, since the example is so small $ gunzip -c file.gz | dd skip=0 bs=8 count=1 of=fragment 1+0 records in 1+0 records out 8 bytes transferred in 0.007 secs (1063 bytes/sec) $ cat fragment hello wo $ gunzip -c file.gz | dd skip=1 bs=8 count=1 of=fragment 1+0 records in 1+0 records out 8 bytes transferred in 0.000 secs (19560 bytes/sec) $ cat fragment rld 1 2
(ETC。)
使用大約是未壓縮
bs
文件大小的十分之一的設置,並且在每次迭代中從 0 開始遞增 1。skip
更新:使用者想要計算未壓縮數據中的行數(請參閱問題所附的評論)。這很容易實現,無需將任何部分的未壓縮數據儲存到磁碟:
$ gunzip -c file.gz | wc -l
gunzip -c
將解壓縮文件並將未壓縮的數據寫入標準輸出。帶有標誌的wc
實用程序-l
將從該流中讀取併計算讀取的行數。