2017-05-10 7 views
0

J'ai un gros fichier gz (11 Go) que je ne peux pas décompresser sur mon ordinateur avec même 100 Go libre. Je l'ai extrait le premier 50 Go avec la commande:Comment extraire une partie (pas début) du fichier .gz?

gzip -cd file.gz | dd ibs=1024 count=50000000 > first_50_GB_file.txt 

j'ai pu analyser avec succès mes données de cette partie du fichier. Maintenant, je veux extraire l'autre partie du fichier à analyser. J'ai essayé d'extraire les n dernières lignes du fichier, puis à décompresse que comme suit:

tail -50 file.gz > last_part_of_file.gz 

j'espérais que par la suite, je pourrais utiliser:

gzip -cd last_part_of_file.gz | dd ibs=1024 count=50000000 > last_50_GB_file.txt 

mais la commande de la queue est prise > 10 minutes pour un test de seulement 50 lignes.

Si quelqu'un a des solutions sur la façon d'extraire des parties (potentiellement arbitraires) d'un fichier .gz qui n'incluent pas le début, je serais très reconnaissant.

Répondre

0

La queue ne peut pas fonctionner avec un fichier binaire; tail -50 renvoie les 50 dernières lignes recherchant le délimiteur '\ 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 

Je pensais d'abord que la taille du fichier extrait était de 100 Go. Pour limiter l'espace à 50Go

gzip -cd file.gz | dd ibs=1024 skip=50000000 count=50000000 > next_50-100_GB_file.txt 

pour la prochaine 50Go

gzip -cd file.gz | dd ibs=1024 skip=100000000 count=50000000 > next_100-150_GB_file.txt 

mais chaque processus gzip de temps doit gonfler depuis le début du fichier d'archive en raison de l'algorithme de compression.

+0

Merci, maintenant je comprends pourquoi la queue ne fonctionnait pas. J'ai essayé cela et n'ai pas eu beaucoup de succès. Utilisation de 'gzip -cd file.gz | dd ibs = 1024 skip = 50000000> after_50_GB_file.txt ' J'ai pris tout l'espace sur mon disque. Donc j'ai supposé que je devrais dire à la commande d'arrêter après un certain nombre de blocs. J'ai ensuite essayé: 'gzip -cd file.gz | dd ibs = 1024 skip = 49000000 count = 50000000> after_49_FR_next_50GB.txt 'et ceci a produit un fichier de 90 GB. Savez-vous ce qui pourrait se passer? –

+0

qu'avez-vous eu? –

+0

J'ai pu le faire fonctionner avec: gzip -cd file.gz | dd ibs = 1024 skip = 49000000 count = 50000000 de = after_49GB_next_50_FR_file.txt Nous vous remercions de votre aide! –