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

来源:互联网 发布:linux运维很忙吗 编辑:程序博客网 时间:2024/06/07 15:06
      当我需要处理一个几万行的文件的时候,需要处理的时间是比较长的。我一开始的想法是,没处理一行,就输出一个 # 号。但是这样还是会出现很多很多的 # 号,即便是放在一行,也是非常不优雅的。所以,我想实现一个展示进度百分比的脚本。


    实现思路


    获取文件的行数


    用 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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 魅族手机wifi信号差怎么办 魅族5s信号不好怎么办 魅族mx5的双击不亮屏怎么办 魅族mx5返回键失灵怎么办 电信苹果3g网速慢怎么办 魅蓝6开不了机怎么办 手机应用被锁了怎么办 魅族电池不耐用怎么办 魅族mx6现在很卡怎么办 魅族e2手机屏幕背景黑色怎么办 魅族x6手机锁了怎么办 360n5返回键失灵怎么办 360n5返回键不好用怎么办 魅族手机锁屏怎么办 魅族手机锁住了怎么办 手机己锁定怎么办魅族 魅蓝u10触屏没反应怎么办 魅蓝e2手机锁定怎么办 苹果手机声音键坏了怎么办 一加6的屏幕问题怎么办 魅蓝note6卡顿怎么办 苹果4s内屏坏了怎么办 魅族mx6一直重启怎么办 魅族充电慢了怎么办啊 笔记本玩游戏掉帧怎么办 psv玩游戏掉帧怎么办 ipad玩游戏掉帧怎么办 手机玩游戏严重掉帧怎么办 苹果7p掉电快怎么办 努比亚z11手机总是开关机怎么办 努比亚手机不能保存图片怎么办 小米8拍照和努比亚怎么办 oppor7手机开不了机怎么办 vivox5m手机开不开机怎么办 步步高x7图案解锁忘记怎么办 手机机锁定怎么办魅族 衣服买完降价了怎么办 在淘宝上不发货怎么办 一加3t吃鸡卡怎么办 小米max打游戏反应慢怎么办 小米max2手机玩游戏卡怎么办