Shell 循环中实现展示进度百分比的脚本方法
发布时间:2020-12-15 16:35:38 所属栏目:安全 来源:网络整理
导读:Shell 循环中实现展示进度百分比的脚本方法 当我需要处理一个几万行的文件的时候,需要处理的时间是比较长的。我一开始的想法是,没处理一行,就输出一个 # 号。但是这样还是会出现很多很多的 # 号,即便是放在一行,也是非常不优雅的。所以,我想实现一个展
Shell 循环中实现展示进度百分比的脚本方法当我需要处理一个几万行的文件的时候,需要处理的时间是比较长的。我一开始的想法是,没处理一行,就输出一个 实现思路
就是这些需求了。我们来逐渐实现。 获取文件的行数这个比较简单,用 999 3.log
在结果的前面有几个空格,我得把空格去掉,于是代码就改成了 wc -l $file | sed 's/^[ t]*//g'
这样就去掉了开头的空格,然后用空格分割,取第一个就可以了, wc -l $file | sed 's/^[ t]*//g' | cut -d ' ' -f1
OK,通过几个命令的组合,很容易的实现了获取行数的数字。 echo 实现单行显示echo -en 'bbbb'
如上,就是将光标提前四个位置,并录入内容。 最终实现代码如下:# 定义变量 i
i=1
# 获取 3.log 这个文件的行数,并把运行结果赋予变量 l
l=$(wc -l 3.log | sed 's/^[ t]*//g' | cut -d ' ' -f1)
# 每行遍历循环
while read line; do
# 输出百分比
echo -en "bbbb"`echo $i*100/$l | bc `'%'
# 计算 i++
((i++))
# 传入 3.log 这个要处理的文件
done < 3.log
# 完成时打个OK,因为字符长度不足以遮盖原先的百分比,所以后面加了几个空格
echo -e 'bbbbOK '
实现效果如下 好,通过简单的几行代码,就实现了我想要的效果了。 以上脚本均在 mac 下测试通过,在 linux 下可能会有稍许不同。 本文由 FungLeo 原创,允许转载,但转载必须保留首发链接。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- ABAP 创建并调用WebService
- 采用网闸隔离的内外网如何进行数据的即时交互?
- 如何在vim中的多个选项卡中编辑相同的文件?
- You have to be inside an angular-cli project
- 在所请求的资源AngularJS上不存在“Access-Contr
- 在Dart Angular中,如何将函数传递给组件
- BootStrap智能表单实战系列(十一)级联下拉的支持
- scala – 播放Websocket示例 – 只有一位Akka演员
- Angular 2 Http总是在Firefox中返回XML,应该是JS
- scala – Shapeless:在HList上反转filterNot
热点阅读