stdin上面向行的输入的良好压缩策略

时间:2017-02-23 00:09:44

标签: text command-line compression pipe

我有一个非常大的数据文本文件:数十亿行,大多数形式为:

On tick 112 total blocks 120

一个简单的Perl脚本将其转换为逗号分隔值,在这种情况下:

112,120

我想动态压缩Perl输出,但显而易见的方法,例如

perl myscript.pl myinputfile.txt | bzip2 > compressedoutput.bz2

似乎根本没有压缩输出(大概是因为这不能一次完成一行?)

有没有办法解决这个问题?显然我可以生成输出文件然后压缩它,但我想知道是否有一个命令行获得良好结果的方式?

1 个答案:

答案 0 :(得分:0)

如何对管道进行写入并不重要。无论如何,字节在管道的另一端压缩相同。

如果您已经正确描述了数据,只包含十进制数字,逗号和换行符,那么它的压缩率绝对应该超过两倍。

你究竟看到了什么?

顺便说一下,您可以并且应该进一步将十进制字符整数编码为二进制整数。