PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auslesen von Zahl aus einer log-Datei für eine Fortschrittsanzeige



stephcar
30-01-2013, 09:39
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:

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:

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:



#!/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 ""

stephcar
31-01-2013, 09:29
Die Lösung gibts hier:
stackoverflow.com/questions/14605107/bash-extract-percent-number-of-variable-length-from-a-string