Comment afficher un fichier compressé en le décompressant seulement partiellement?

J’ai compressé le fichier, que je veux voir en utilisant quelque chose comme “moins” utilitaire dans Unix. “less” fournit une option de prétraitement grâce à laquelle je peux décompresser le fichier. Mais, si je veux décompresser partiellement un fichier (dans le cadre du prétraitement) et diriger / diriger la sortie vers moins? Cela a l’avantage de décompresser seulement une partie du fichier.

S’il existe un autre moyen d’afficher un fichier compressé en décompressant partiellement, faites-le moi savoir.

Merci Rahul

Vous devez créer votre propre format de compression pour cela; toutes les bibliothèques existantes (gzip, bzip2, lzma) sont en streaming mais pas en bloc (c’est-à-dire que vous ne pouvez pas chercher dans le stream compressé).

Une solution consiste à créer un fichier comme une archive ZIP: un stream d’entrées suivi d’une table des matières (TOC). Dans votre cas, les entrées (= morceaux) auront toutes la même taille avant la compression.

Essayez la taille de bloc de 4 Ko; cela devrait encore donner une assez bonne compression, une surcharge raisonnable et un temps de décompression rapide par morceau. Ecrivez les morceaux compressés dans un fichier et notez le décalage de début pour chacun dans la table des matières.

Lors de la recherche dans le stream, recherchez le décalage de 4 Ko dont vous avez besoin, lisez le décalage depuis la table des matières, lisez le bloc compressé et décompressez-le.

[EDIT] Vous devez créer un petit outil qui peut commencer à décompresser n’importe où dans l’archive et qui continue simplement à décompresser jusqu’à ce que l’EOF soit atteint. Mais vous voulez probablement savoir quelle partie du fichier affiche moins. Il n’y a pas de solution simple à cela. less est conçu pour afficher un stream. Il ne peut pas “chercher” dans ce stream; au contraire, less créera un tampon quelque part dans lequel il pourra chercher. Si vous voulez éviter cela (généralement parce que le fichier est trop gros), vous devez écrire votre propre version de less .

Sinon, regardez le code source de less . Peut-être que vous pouvez remplacer la partie “buffer input” du code par quelque chose qui peut parler à votre décodeur.