小编Hel*_*osh的帖子

压缩小文件的算法(345字节)

我正在寻找一种可以无损压缩少量噪声数据的软件; 例:

ZmNiYWNma3F5gYqSmqCkpqenpKGdmJONiIN/e3d1c3FxcXFxcnN0dXZ3eXp7fHx9fn5/gIGDhISFhYWFhIOCgYGAgICBgoOEhYeIiYmJiYiGhIF+fHl3dHNyc3N1d3p9gIOGiYuMjY2NjIuKiIeFg4GAfnx7eXl4eHl5enx9fn5/gICAgYGBgYGBgYGBgoKDhISEhISEhIOCgoGAgH9/fn5+fn5/gICAgICAgICAgICAgICAf39/gICBgoOFhoeIiIiIiIeGhYOCgH99fHt6enp6e3x9foCAgoKDg4ODgoKBgH59fHt7e3t8fX5/gIKDhIWFhoaGhoaFhISDgoKBgQ==
Run Code Online (Sandbox Code Playgroud)

原始数据:345B(100%),gzip:280B(81%),bzip2:289B(84%),lzop:415B(120%),

还有其他方法我应该尝试吗?

compression algorithm

4
推荐指数
1
解决办法
202
查看次数

bash:虽然读得非常慢

据我所知,"while read"是如此之慢,因为它按字节顺序读取.如果直线对我来说足够了,是否有更有效的方法来做到这一点?

我有一个文件data.txt每行包含四个参数:

1 56 56 48
3 646 86 656
4 56 894 959
6 89 849 875
Run Code Online (Sandbox Code Playgroud)

等等

我想在每一行上执行一个操作(将每个值分配给一个变量进行进一步处理).

这是我现在这样做的方式:

cat data.txt | 
while read linewise; do
par0=`echo $linewise |awk '{print $1}'`; 
par1=`echo $linewise |awk '{print $2}'`;
par2=`echo $linewise |awk '{print $3}'`;
par3=`echo $linewise |awk '{print $4}'`;

echo $par0 $par1 $par2 $par3
done
Run Code Online (Sandbox Code Playgroud)

但对于~1000行文件,这需要半分钟:

real    0m30.380s
user    0m7.996s
sys     0m11.820s
Run Code Online (Sandbox Code Playgroud)

我怎样才能加快速度呢?

bash while-loop

2
推荐指数
1
解决办法
897
查看次数

标签 统计

algorithm ×1

bash ×1

compression ×1

while-loop ×1