我想使用 bash 脚本编写一个小进度条。
要生成进度条,我必须从日志文件中提取进度。
此类文件(此处为 run.log)的内容如下所示:
2d 15h 完成时间,完成 42.5%,剩余时间步长 231856
我现在有兴趣隔离 42.5%。现在的问题是这个数字的长度以及数字的位置是可变的(例如,“完成时间”可能只包含一个数字,如 23 小时或 59 分钟)。
我在这个位置上试过了
echo "$(tail -1 run.log | awk '{print $6}'| sed -e 's/[%]//g')"
它在短的“完成时间”以及通过 %-sign 失败
echo "$(tail -1 run.log | egrep -o '[0-9][0-9].[0-9]%')"
这里仅适用于 >= 10% 的数字。
有更多可变数字提取的解决方案吗?
==================================================== ====
更新:现在是进度条的完整脚本:
#!/bin/bash
# extract % complete from run.log
perc="$(tail -1 run.log | grep -o '[^ ]*%')"
# convert perc to int
pint="${perc/.*}"
# number of # to plot
nums="$(echo "$pint /2" | bc)"
# output
echo -e ""
echo -e " completed: $perc"
echo -ne " "
for i in $(seq $nums); do echo -n '#'; done
echo -e ""
echo -e " |----.----|----.----|----.----|----.----|----.----|"
echo -e " 0% 20% 40% 60% 80% 100%"
echo -e ""
tail -1 run.log
echo -e ""
谢谢你们的帮助,伙计们!