(取消/取消)在 bash 中压缩字符串?

发布于 2024-12-06 10:18:17 字数 331 浏览 1 评论 0原文

是否可以使用 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,但我阅读了其他压缩实用程序手册页,但找不到解决方案?

Is it possible to compress/decompress a string in bash using stdin/stdout ?

I tried this but apparently it is not supported ?

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

I'm not well versed in linux but I read other compression utilities man pages and couldn't find a solution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

污味仙女 2024-12-13 10:18:17

如果 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 个字节的文本中。

If 33% compression rate loss is acceptable for you, then you can store base64 encoded compressed data:

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

It will work, but each 3 (compressed) bytes will be stored in 4 bytes of text.

好多鱼好多余 2024-12-13 10:18:17

当你这样做时:

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

你在变量 hey 中没有与在 /tmp/myfile 创建者中相同的字节:

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

你得到“gzip:stdin是一个多-部分 gzip 文件 -- 不支持”错误只是因为您损坏了无法解压缩的压缩数据。

VAR=$(...) 结构是为处理文本而设计的。例如,这就是为什么您会获得额外的尾部修剪。

When you do:

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

You don't have same same bytes in variable hey as you have in /tmp/myfile created by:

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

You get "gzip: stdin is a multi-part gzip file -- not supported" error simply because you have broken compressed data which cannot be uncompressed.

The VAR=$(...) construction is designed for working with text. This is why you get extra trailing trim for example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文