GNU/Linux >> LINUX-Kenntnisse >  >> Linux

(Un / De) komprimieren Sie eine Zeichenfolge in Bash?

Wenn ein Verlust der Komprimierungsrate von 33 % für Sie akzeptabel ist, können Sie base64-codierte komprimierte Daten speichern:

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

Es wird funktionieren, aber alle 3 (komprimierten) Bytes werden in 4 Bytes Text gespeichert.


Wenn Sie dies tun:

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

Sie haben nicht die gleichen Bytes in der Variablen hey wie in /tmp/myfile erstellt von:

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

Sie erhalten den Fehler „gzip:stdin ist eine mehrteilige gzip-Datei – wird nicht unterstützt“, nur weil Sie beschädigte komprimierte Daten haben, die nicht dekomprimiert werden können.

Die VAR=$(...) Die Konstruktion ist für die Arbeit mit Text ausgelegt. Aus diesem Grund erhalten Sie zum Beispiel einen zusätzlichen Nachlauf.


Linux
  1. Wie liest man eine Zeichenfolge als Hex-Zahl in Bash?

  2. So teilen Sie eine Zeichenfolge in Bash-Skript auf

  3. Wie funktioniert cat << EOF in Bash?

  4. URL, die eine Zeichenfolge in Bash-Skript codiert

  5. Konvertieren Sie eine Textzeichenfolge in Bash in ein Array

So prüfen Sie, ob eine Zeichenfolge in Bash eine Teilzeichenfolge enthält

Ersetzen von Zeichenfolgen in Bash

Bash-Scripting – String-Manipulation

Benutzeroberflächen mit Dialog. Bash-Skripting (IV)

Bash-Anfängerserie Nr. 6:Zeichenfolgenoperationen in Bash

Ersetzen einer Teilzeichenfolge durch eine andere Zeichenfolge in Bash