全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

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

实现思路

  • 获取文件的行数
  • 用 i++ 实现每行处理的计数
  • 当前处理行数*100再除以文件行数+%得到我要输出的百分比结果
  • 我需要在一行展示,而不是一直追加或者每次都显示一行

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

获取文件的行数

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

   999 3.log

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

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

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

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

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

echo 实现单行显示

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

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

最终实现代码如下:

# 定义变量 i
i=1

# 获取 3.log 这个文件的行数,并把运行结果赋予变量 l
l=$(wc -l 3.log | sed 's/^[ \t]*//g' | cut -d ' ' -f1)

# 每行遍历循环
while read line; do

 # 输出百分比
 echo -en "\b\b\b\b"`echo $i*100/$l | bc `'%'

 # 计算 i++
 ((i++))

# 传入 3.log 这个要处理的文件
done < 3.log
# 完成时打个OK,因为字符长度不足以遮盖原先的百分比,所以后面加了几个空格
echo -e '\b\b\b\bOK   '

实现效果如下

好,通过简单的几行代码,就实现了我想要的效果了。

以上脚本均在 mac 下测试通过,在 Linux 下可能会有稍许不同。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Linux  # Shell循环中实现展示进度百分比  # Shell进度条  # linux shell常用循环与判断语句(for  # while  # until  # if)使用方法  # Linux Shell在目录下使用for循环结合if查找文件的巧用  # linux shell中实现循环日期的实例代码  # 对Linux下shell编程之for循环的实例讲解  # linux shell 中数组的定义和for循环遍历的方法  # Linux shell 实现用for循环100次的方法  # Linux shell数组循环的实例详解  # Linux shell编程中IO和条件及循环处理的细节问题讨论  # linux shell循环:for、while、until用法详解  # 几个  # 行数  # 实现了  # 我想  # 我要  # 会有  # 放在  # 第一个  # 就能  # 如有  # 我一  # 遍历  # 当我  # 很容易  # 希望能  # 掉了  # 有几个  # 就不能  # 就去  # 打个 


相关文章: 购物网站制作公司有哪些,哪个购物网站比较好?  建站之星如何实现五合一智能建站与营销推广?  建站10G流量真的够用吗?如何应对访问高峰?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  C#如何在一个XML文件中查找并替换文本内容  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  如何用PHP快速搭建高效网站?分步指南  打鱼网站制作软件,波克捕鱼官方号怎么注册?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  如何配置IIS站点权限与局域网访问?  如何在建站主机中优化服务器配置?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  ,柠檬视频怎样兑换vip?  建站之星后台管理:高效配置与模板优化提升用户体验  开源网站制作软件,开源网站什么意思?  网站设计制作企业有哪些,抖音官网主页怎么设置?  建站之星在线版空间:自助建站+智能模板一键生成方案  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何在建站宝盒中设置产品搜索功能?  如何零基础在云服务器搭建WordPress站点?  建站之星如何修改网站生成路径?  如何快速生成可下载的建站源码工具?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  如何高效搭建专业期货交易平台网站?  做企业网站制作流程,企业网站制作基本流程有哪些?  小建面朝正北,A点实际方位是否存在偏差?  黑客入侵网站服务器的常见手法有哪些?  如何用低价快速搭建高质量网站?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  建站主机选虚拟主机还是云服务器更好?  实现虚拟支付需哪些建站技术支撑?  如何在阿里云ECS服务器部署织梦CMS网站?  建站之星如何一键生成手机站?  如何用虚拟主机快速搭建网站?详细步骤解析  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  制作网站的公司有哪些,做一个公司网站要多少钱?  成都网站制作报价公司,成都工业用气开户费用?  建站之星如何取消后台验证码生成?  PHP 500报错的快速解决方法  高端智能建站公司优选:品牌定制与SEO优化一站式服务    建站之星下载版如何获取与安装?  建站主机选购指南与交易推荐:核心配置解析  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  怎么将XML数据可视化 D3.js加载XML  C++中引用和指针有什么区别?(代码说明)  攀枝花网站建设,攀枝花营业执照网上怎么年审?  如何使用Golang table-driven基准测试_多组数据测量函数效率  如何高效完成自助建站业务培训?  如何快速搭建高效服务器建站系统? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。