我有一个很大的 .gz 文件,它本身就是 2.6 GB。由于大小限制,我无法解压缩它。该文件是单个大文本文件。由于大小限制,我无法完全解压缩它。我想把它分成 10 个单独的部分,然后单独解压缩每个部分,以便我可以使用每个单独的文件:
我的问题是:
谢谢
该gzip压缩格式支持解压已从几个较小的压缩文件级联文件(解压缩后的文件将包含串联解压缩数据),但它不支持解压缩削减了压缩文件。
假设您希望以解压数据的“切片”结束,您可以通过将解压数据输入dd多次来解决此问题,每次选择解压数据的不同切片以保存到文件并丢弃其余部分.
在这里,我使用了一个很小的示例文本文件。我反复解压缩它(这将需要一些时间进行大型文件),每一次我选了一个8字节的片出来的解压缩数据。您可以这样做,但对bs("block size")使用更大的值。
$ 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
Run Code Online (Sandbox Code Playgroud)
(等等。)
使用bs大约为未压缩文件大小十分之一的设置,并在每次迭代中skip从 0增加一个。
更新:用户想要计算未压缩数据中的行数(请参阅问题所附的评论)。这很容易实现,无需将未压缩数据的任何部分存储到磁盘:
$ gunzip -c file.gz | wc -l
Run Code Online (Sandbox Code Playgroud)
gunzip -c将解压缩文件并将未压缩的数据写入标准输出。wc带有-l标志的实用程序将从该流中读取并计算读取的行数。
| 归档时间: |
|
| 查看次数: |
10847 次 |
| 最近记录: |