(Nations unies/De)compresse une chaîne en bash?
Est-il possible de compresser/décompresser une chaîne de caractères dans un bash à l'aide de stdin/stdout ?
J'ai essayé cela, mais apparemment, il n'est pas pris en charge ?
hey=$(echo "hello world" | gzip -cf)
echo $hey # returns a compressed string
echo $hey | gzip -cfd
gzip: stdin is a multi-part gzip file -- not supported
Je ne suis pas très versé dans linux, mais j'ai lu d'autres utilitaires de compression des pages de man et ne pouvais pas trouver une solution?
OriginalL'auteur Jane Watson | 2011-09-24
Vous devez vous connecter pour publier un commentaire.
Lorsque vous faites:
Vous n'avez pas même même les octets de la variable de la
hey
que vous avez dans/tmp/myfile
créé par:Vous obtenez "gzip: stdin est un multi-partie gzip fichier -- non pris en charge" erreur simplement parce que vous avez rompu compressé des données qui ne peuvent être décompressés.
La
VAR=$(...)
de construction est conçu pour travailler avec du texte. C'est pourquoi vous obtenez supplémentaire de fuite de la garniture par exemple.OriginalL'auteur Michał Šrajer
Si 33% taux de compression perte est acceptable pour vous, alors vous pouvez stocker encodées en base64 données compressées:
Cela va fonctionner, mais chaque 3 (compressé) octets sera stocké sur 4 octets de texte.
base64
lors de la compression seraitbase64 -w0
. Sinon, les nouvelles lignes sont ajoutées à la sortie.OriginalL'auteur Michał Šrajer