(Un/De)在bash中压缩字符串



是否可以在bash中使用stdin/stdout压缩/解压缩字符串?

我试过了,但显然不支持?

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

我不是很精通linux,但我读了其他压缩实用程序手册页,找不到解决方案?

如果您可以接受33%的压缩率损失,那么您可以存储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

它将工作,但每3(压缩)字节将存储在4字节的文本

当你这样做的时候:

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

变量hey中的字节数与/tmp/myfile中创建的字节数不同:

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

你得到"gzip: stdin是一个多部分的gzip文件——不支持"错误,仅仅是因为你破坏了压缩数据,无法解压缩。

VAR=$(...)结构设计用于处理文本。这就是为什么你会得到额外的尾饰。

最新更新