GNU/Linux >> Belajar Linux >  >> Linux

(Un/De) kompres string di bash?

Jika kehilangan tingkat kompresi 33% dapat diterima untuk Anda, maka Anda dapat menyimpan data terkompresi dengan enkode 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

Ini akan berfungsi, tetapi setiap 3 byte (terkompresi) akan disimpan dalam 4 byte teks.


Saat Anda melakukannya:

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

Anda tidak memiliki byte yang sama dalam variabel hey seperti yang Anda miliki di /tmp/myfile dibuat oleh:

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

Anda mendapatkan kesalahan "gzip:stdin adalah file gzip multi-bagian -- tidak didukung" hanya karena Anda telah merusak data terkompresi yang tidak dapat dibuka kompresinya.

VAR=$(...) konstruksi dirancang untuk bekerja dengan teks. Inilah sebabnya mengapa Anda mendapatkan trim trailing tambahan misalnya.


Linux
  1. Cara Memeriksa apakah String Berisi Substring di Bash

  2. Konversikan string teks dalam bash ke array

  3. Apa yang dilakukan 'bash -c'?

  1. Menggunakan Referensi Ke Variabel Bash String Di Sed?

  2. Cara Menemukan Panjang String di Bash [Kiat Singkat]

  3. bash - temukan posisi indeks string dari substring

  1. Bagaimana Cara Membaca String Sebagai Angka Hex Di Bash?

  2. Cara Memisahkan String dalam Skrip Bash

  3. Bagaimana cara kerja cat << EOF di bash?