pipe - 尾巴 | gzip 在尾部后给出的文件长度与 gzip 不同
问题描述
我想压缩文件的最后 N 个字节。然而,尾| gzip 在尾部后给出的输出长度与 gzip 不同。
tail --bytes=1000 ./input > ./output.tmp
gzip -k output.tmp
tail --bytes=1000 ./input | gzip > ./output.gz
stat --format=%n:%s *
input : 4843152
output.gz : 449
output.tmp : 1000
output.tmp.gz : 460
为什么tail
然后gzip
给出 460 字节但tail | gzip
给出 449 字节?
解决方案
http://www.zlib.org/rfc-gzip.html#header-trailer
如果压缩文件,原始文件名将记录在 FNAME 字段中。如果压缩流,则没有原始文件名。
这似乎解释了你的情况的差异。
推荐阅读
- sql-server - 从表中删除“Document No_”到“Document No_”的记录?
- cdo-climate - 在 cdo 中使用双线性插值重新网格化 NetCDF 文件
- csv - 如何在perl中删除不可打印的字符^@
- mongodb - 无法从 Intellij Idea Ultimate/DataGrip 连接到 mongo atlas
- asp.net-mvc - Asp.Net MVC 在一个视图中显示两个表
- jooq - jooq 的 quarkus 结构
- python - 如何在 Jupyter notebook 或 Spyder 上运行 pyferret?
- api - Restful 服务 Curl 命令在 unix 上工作,但不在窗口中
- android - 错误:包 android.arch.lifecycle 不存在
- kubernetes - 将环境变量从现成的 kubernetes secret 加载到 helm chart