您的位置:首页 > 运维架构 > Shell

Shell 循环中实现展示进度百分比的脚本方法

2017-08-02 18:34 549 查看
      当我需要处理一个几万行的文件的时候,需要处理的时间是比较长的。我一开始的想法是,没处理一行,就输出一个 # 号。但是这样还是会出现很多很多的 # 号,即便是放在一行,也是非常不优雅的。所以,我想实现一个展示进度百分比的脚本。

    实现思路

    获取文件的行数

    用 i++ 实现每行处理的计数

    当前处理行数*100再除以文件行数+%得到我要输出的百分比结果

    我需要在一行展示,而不是一直追加或者每次都显示一行

    就是这些需求了。我们来逐渐实现。

    获取文件的行数

    这个比较简单,用 wc -l $file 就能获取到了。但是得到的结果我不是很满意:

    999 3.log

    1

    1

    在结果的前面有几个空格,我得把空格去掉,于是代码就改成了

    wc -l $file | sed 's/^[ \t]*//g'

    1

    1

    这样就去掉了开头的空格,然后用空格分割,取第一个就可以了,cut来实现

    wc -l $file | sed 's/^[ \t]*//g' | cut -d ' ' -f1

    1

    1

    OK,通过几个命令的组合,很容易的实现了获取行数的数字。

    echo 实现单行显示

    echo -en '\b\b\b\b'

    1

    1

    如上,就是将光标提前四个位置,并录入内容。\b是提前一个,输入几个就几个,如果已经到了开头了,就不能往前挪了,所以,多输入几个是没问题的。

宁波好的整形医院 www.iyestar.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: