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
实现思路
获取文件的行数
用 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
相关文章推荐
- shell 循环中实现展示进度百分比的脚本方法2
- Shell 循环中实现展示进度百分比的脚本方法
- Linux Shell循环中实现展示进度百分比的实现方法
- shell脚本中echo显示内容带颜色的实现方法
- iOS开发中实现新闻图片的无限循环展示的方法
- cp显示进度条 —纯shell实现方法
- 【CD唱片shell脚本实现】实现方法
- shell脚本中echo显示内容带颜色的实现方法
- linux下采用shell脚本实现批量为指定文件夹下图片添加水印的方法
- Shell脚本实现乱序排列文件内容的多种方法(洗牌问题)
- shell脚本实现拷贝大文件显示百分比的代码分享
- 进度条---shell脚本实现
- shell脚本中实现大段代码的注释方法
- linux c程序中获取shell脚本输出的实现方法
- Shell脚本之无限循环的两种方法
- shell脚本实现拷贝大文件显示百分比的代码分享
- linux c程序中获取shell脚本输出的实现方法
- 使用autossh实现开机创建ssh tunnel的方法以及shell脚本.
- shell脚本中echo显示内容带颜色的实现方法