ref: 662804331795230f76a836ce2db230317149d709
dir: /hours.awk/
#!/bin/awk -f
function gettime(time) {
hours = int(time / 3600)
minute = int(int(time/60) % 60)
sec = int(time % 60)
return sprintf("%dh %dm %ds", hours, minute, sec);
}
BEGIN {
FS="\t";
sum=0;
# print report table header tbl(1)
printf ".TS\nbox expand;\n";
printf "c c c c\n";
printf "- s s s\n";
printf "l l r l.\n";
printf "From\tTo\tTime\tDescription\n";
printf "\n";
}
$1 && $2 && $3 && !/^#/ {
cmd = "date -f 'DD.MM.YYYY hh:mm:ss' "$1
cmd | getline from
close(cmd)
cmd = "date -f 'DD.MM.YYYY hh:mm:ss' "$2
cmd | getline to
close(cmd)
time = $2 - $1
$1 = $2 = ""
sub(/^ +/, "")
sub(/ +$/, "")
printf "%s\t%s\t%s\t%s\n", from, to, gettime(time), $0;
sum += time;
}
END {
printf ".T&\n";
printf "- s s s\n";
printf "l r r c.\n";
printf "\n";
printf "\tSum\t%s\t\n", gettime(sum);
printf ".TE\n";
}