我有一个大的gz文件(11 GB),我可以解压缩到我的电脑,甚至100GB免费。我用命令提取了前50 GB:
gzip -cd file.gz | dd ibs=1024 count=50000000 > first_50_GB_file.txt
我能够从文件的这一部分成功解析我的数据。现在我想提取要解析的文件的其他部分。我试图从文件中提取最后n行,然后按如下方式解压缩:
tail -50 file.gz > last_part_of_file.gz
我希望事后能够使用:
gzip -cd last_part_of_file.gz | dd ibs=1024 count=50000000 > last_50_GB_file.txt
但是尾部命令只需要10分钟就可以测试50行。
如果有人有任何关于如何提取(可能是任意的).gz文件中不包含开头的部分的解决方案,我将非常感激。
答案 0 :(得分:0)
tail不能使用二进制文件; tail -50返回最后50行,寻找' \ n' (char 10)分隔符。
gzip -cd file.gz | dd ibs=1024 count=50000000 > first_50_GB_file.txt
gzip -cd file.gz | dd ibs=1024 skip=50000000 > after_50_GB_file.txt
我首先提取的文件大小为100GB。 将空间限制为50GB
gzip -cd file.gz | dd ibs=1024 skip=50000000 count=50000000 > next_50-100_GB_file.txt
下一个50GB
gzip -cd file.gz | dd ibs=1024 skip=100000000 count=50000000 > next_100-150_GB_file.txt
但每次gzip进程必须从归档文件的开头膨胀 由于压缩算法。