GNU/Linux >> Tutoriels Linux >  >> Linux

(Dé/Dé)compresser une chaîne en bash ?

Si une perte de taux de compression de 33 % est acceptable pour vous, vous pouvez stocker des données compressées encodées en base64 :

me$mybox$ FOO=$(echo "Hello world" | gzip | base64 -w0) # compressed, base64 encoded data
me$mybox$ echo $FOO | base64 -d | gunzip # use base64 decoded, uncompressed data
Hello world

Cela fonctionnera, mais chaque 3 octets (compressés) seront stockés dans 4 octets de texte.


Lorsque vous faites :

hey=$(echo "hello world" | gzip -cf)

Vous n'avez pas les mêmes octets dans la variable hey comme vous l'avez dans /tmp/myfile créé par :

echo "hello world" | gzip -cf > /tmp/myfile

Vous obtenez l'erreur "gzip :stdin est un fichier gzip en plusieurs parties -- non pris en charge" simplement parce que vous avez endommagé des données compressées qui ne peuvent pas être décompressées.

Le VAR=$(...) construction est conçue pour travailler avec du texte. C'est pourquoi vous obtenez une garniture de fuite supplémentaire par exemple.


Linux
  1. Utilisation d'une référence à une variable de chaîne Bash dans Sed ?

  2. Comment lire une chaîne en tant que numéro hexadécimal dans Bash ?

  3. Comment trouver la longueur d'une chaîne dans Bash [Astuce rapide]

  4. Comment vérifier si la chaîne contient une sous-chaîne dans Bash

  5. Comment cat << EOF fonctionne-t-il dans bash?

Comment vérifier si une chaîne contient une sous-chaîne dans Bash

Remplacement de chaîne dans Bash

Script Bash - Manipulation de chaînes

Interfaces utilisateur avec dialogue. Script bash (IV)

Bash Beginner Series #6 :Opérations sur les chaînes dans Bash

Remplacement d'une sous-chaîne par une autre chaîne dans Bash