Hallo,
ich habe mir ein kleines Skript geschrieben, welches mir den Fortschritt einer Modellsimulation visualieren soll.
Die notwendigen Daten werden dabei aus einer log-Datei ausgelesen. Da hab ich noch ein kleines Problem:
Ein Beispiel aus meinem log file:
Code:
Time to finish 2d 15h, 42.5% completed, time steps left 231856
Interessiert bin ich an den 42.5% (eine Integer von '42' reicht mir). Gelöst habe ich es so:
Code:
perc="$(tail -1 run.log | awk '{print $6}'| sed -e 's/[%]//g')"
der awk Befehl findet im obigen Beispiel die 42%. Allerdings ist das zu abhängig von 'Time to finish'; dieses kann sich änden zu etwa 23h oder 54min. Dann bräuchte ich ein awk '{print $5}'.
Wie kann ich das eleganter lösen?
Danke!
Hier das gesamte Skript:
Code:
#!/bin/bash
# displays the status of simulation in the present working directory
# extract % complete from tail
# e.g. 42% from 'Time to finish 2d 15h, 42.5% completed, time steps left 231856'
perc="$(tail -1 run.log | awk '{print $6}'| sed -e 's/[%]//g')"
# convert float 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 ""
Lesezeichen