#! /bin/sh FILE=$1 TMP=$(mktemp -d /tmp/tmp.XXXXXX) function error { cat 1>&2 exit 1 rm -rf $TMP } if ! cols=$(grep "#[ ]*COLUMNS" $FILE) then error <<EOF E: $FILE: Cannot locate the COLUMNS descriptor EOF fi cols=$(echo $cols | sed 's/#//') columns=$(echo $cols | awk '{print $2;}') count=1 while [ $count -le $columns ] do column[$count]=$(echo $cols | awk -vcount=$count '{print $(2 + count);}') if [ -z "${column[$count]}" ] then column[$count]=$count; fi count=$(($count + 1)) done # Set up the plot area count=2 with="with dots" cat > $TMP/gnuplot.script <<EOF set xlabel "${column[1]} (s)" set ylabel "Progress" EOF # Plot the events height=15 grep "#[ ]*EVENT" $FILE | sed 's/#//' > $TMP/events cat $TMP/events | while read event x text do if ! [ $event = "EVENT" ] then cat 1>&2 <<EOF E: Unknown event type "$event", ignoring EOF continue; fi height_text=$(($height + 2)) echo "set arrow from $x, graph 0 to $x, graph 0.$height" >> $TMP/gnuplot.script echo "set label \"$text\" at $x, graph 0.$height_text center" >> $TMP/gnuplot.script height=$(($height + 8)) done # Set Key echo "set key left top box lt 0" >> $TMP/gnuplot.script # Plot the data echo "plot '$FILE' using 1:2 title \"${column[$count]}\" $with" >> $TMP/gnuplot.script count=3 while [ $count -le $columns ] do echo "replot '$FILE' using 1:$count title \"${column[$count]}\" $with" \ >> $TMP/gnuplot.script count=$(($count + 1)) done ( cat $TMP/gnuplot.script; cat ) | gnuplot rm -rf $TMP