我正在使用两个很棒的工具todotxt和punch来跟踪我的时间。有了这一个 可以生成如下所示的报告:
2012-11-23 (2 hours 56 minutes):
first task (52 minutes)
second task (2 hours 4 minutes)
2012-11-24 (2 hours 8 minutes):
second task (2 hours 8 minutes)
我的问题:分析这种输出的方便方法是什么?例如。 我怎么能总结花在做“第一个任务”/“第二个任务”或找出的时间 我的总工作时间较长,如“2012-11 - *”?
所以,我想要一个像punch.sh report /regex-for-date-or-task-i'm-interested-in/
这样的命令。
我read和saw awk
可以实现这一点。但我不知道如何1)总和分钟+小时和2)提供“空格任务名称”作为awk的变量。
更新
我还使用+tags
标记我的任务以标记不同的项目(如first task +projecttag
中所示)。因此,将所有任务花费在特定标签上的时间总结也很棒。
感谢您的帮助!
答案 0 :(得分:1)
在运行此脚本之前。请取消注释相应的gsub()
功能。像:
awk -f script.awk file
script.awk
的内容:
BEGIN {
FS="[( \t)]"
}
/^\t/ {
line = $0
#### If your input has...
## No tags, show hrs in each task
# gsub(/^[\t ]*| *\(.*/,"",line)
## Tags, show hrs in each task
# gsub(/^[\t ]*| *\+.*/,"",line)
## Tags, show hrs in each tag
# gsub(/^[^+]*\+| *\(.*/,"",line)
####
for(i=1;i<=NF;i++) {
if ($i == "hours") h[line]+=$(i-1)
if ($i == "minutes") m[line]+=$(i-1)
}
}
END {
for (i in m) {
while (m[i] >= 60) { m[i]-=60; h[i]++ }
print i ":", (h[i] ? h[i] : "0") " hrs", m[i], "mins"
}
}