是否可以使用stdin / stdout压缩/解压缩bash中的字符串?
我试过这个,但显然它不受支持?
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,但是我读了其他压缩实用程序手册页,却找不到解决方案?
答案 0 :(得分:11)
如果您可以接受33%的压缩率丢失,那么您可以存储base64编码的压缩数据:
me$mybox$ FOO=$(echo "Hello world" | gzip | base64) # compressed, base64 encoded data
me$mybox$ echo $FOO | base64 -d | gunzip # use base64 decoded, uncompressed data
Hello world
它会工作,但每个3(压缩)字节将存储在4个字节的文本中。
答案 1 :(得分:6)
当你这样做时:
hey=$(echo "hello world" | gzip -cf)
变量hey
中的字节数与{1}}创建的字节数相同:
/tmp/myfile
你得到“gzip:stdin是一个多部分的gzip文件 - 不支持”错误只是因为你破坏了无法解压缩的压缩数据。
echo "hello world" | gzip -cf > /tmp/myfile
构造旨在处理文本。这就是你获得额外尾随修剪的原因。