是否可以在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=$(...)
结构设计用于处理文本。这就是为什么你会得到额外的尾饰。