GNU/Linux >> Tutoriales Linux >  >> Linux

(Des/Des) comprimir una cadena en bash?

Si la pérdida de la tasa de compresión del 33 % es aceptable para usted, entonces puede almacenar datos comprimidos codificados 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

Funcionará, pero cada 3 bytes (comprimidos) se almacenarán en 4 bytes de texto.


Cuando lo haces:

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

No tienes los mismos bytes en la variable hey como tienes en /tmp/myfile creado por:

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

Obtiene el error "gzip:stdin es un archivo gzip de varias partes, no compatible" simplemente porque tiene datos comprimidos dañados que no se pueden descomprimir.

El VAR=$(...) La construcción está diseñada para trabajar con texto. Esta es la razón por la que, por ejemplo, obtienes un recorte adicional.


Linux
  1. ¿Usando una referencia a una variable de cadena Bash en Sed?

  2. Cómo dividir una cadena en Bash Script

  3. Cómo encontrar la longitud de la cadena en Bash [Consejo rápido]

  4. ¿Cómo funciona cat << EOF en bash?

  5. URL que codifica una cadena en bash script

Cómo verificar si una cadena contiene una subcadena en Bash

Sustitución de cadena en Bash

Bash Scripting – Manipulación de cadenas

Interfaces de usuario con diálogo. Script Bash (IV)

Bash Beginner Series #6:Operaciones de cadenas en Bash

Reemplazo de una subcadena con otra cadena en Bash