bashスクリプトを使用して小さなプログレスバーを作成したいと思います。
プログレスバーを生成するには、ログファイルから進行状況を抽出する必要があります。
このようなファイル(ここではrun.log)の内容は次のようになります。
2d 15hを終了する時間、42.5%完了、残り時間231856
私は今、42.5%を分離することに興味があります。問題は、この数字の長さと数字の位置が可変であるということです(たとえば、「終了までの時間」には、23時間や59分などの1つの数字しか含まれない場合があります)。
経由でポジションを試してみました
echo "$(tail -1 run.log | awk '{print $6}'| sed -e 's/[%]//g')"
これは、「終了までの時間」と%記号を介して短時間失敗します
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 ""
皆さん、助けてくれてありがとう!