: tabulate compare output format=$'%10s %12s %8s %8s\n' function elapsed { integer ss=0 ds=0 h m s d typeset t for t do case $t in *h*) h=${t%h*}; t=${t#*h} ;; *) h=0 ;; esac case $t in *m*) m=${t%m*}; t=${t#*m} ;; *) m=0 ;; esac t=${t%s} case $t in *.*) s=${t%.*}; t=${t#*.}; d=${t#*.} ;; *) s=$t d=0 ;; esac (( ss += (h * 60 + m) * 60 + s )) (( ds += d )) done while (( ds >= 100 )) do (( ds -= 100 )) (( ss += 1 )) done print -f $'%d.%02d\n' $ss $ds } while read cmd opt part uncompress_size x do case $cmd in gzip) method=gzip uncompress_size=$opt ;; pzip|rzip) method=${part#*-} method=${method%.*} ;; *) continue ;; esac read x read x compress_real read x compress_user read x compress_sys read x read compress_size x read x read x uncompress_real read x uncompress_user read x uncompress_sys || break print -f "$format" $method $compress_size $(elapsed $compress_user $compressed_sys) $(elapsed $uncompress_user $uncompress_sys) done