【发布时间】:2018-10-09 01:10:50
【问题描述】:
我有一个 todo.txt 任务列表,我想对其进行过滤以显示任何安排在未来或今天的日期的任务,即 - 不显示过去的安排日期,只显示已安排日期的任务。
文件行和顺序有时会更改,以包含一个“阈值”(想想打盹/推迟任务直到...),格式为:t:date +%Y-%m-%d,表示“不要开始”这个任务直到这个日期'。
数据文件:
50 (A) Testing due date due:2018-09-22 t:2018-09-25
04 (B) Buy Socks, Underwear t:2018-09-22
05 (B) Buy Vaporizer t:2018-09-23 due:2018-09-22
16 (C) Watch Thor Ragnarock
12 (B) Pay Electric Bill due:2018-09-20 t:2018-09-25
x 2018-09-21 pri:B Buy Prebiotics +health @web due:2018-09-21
到目前为止,我想出了这个:
cat t | awk -F: -v date="$(date +%Y-%m-%d)" '/due:|t:/ $2 >= date || $3 >= date { print $0}'|
nl
问题是,日期比较是在“due:”字段上进行的,因为它通常位于“t:”字段之前。此外,输出早于今天的条目。
输出:
1 50 (A) Testing due date due:2018-09-22 t:2018-09-25
2 05 (B) Buy Vaporizer t:2018-09-23 due:2018-09-22
3 12 (B) Pay Electric Bill due:2018-09-20 t:2018-09-25
问题:
如果“t:”存在,我如何正确地与“t:”值进行日期比较?
日期大于 (“>”) 似乎有效,但等于无效 (“>=”)
【问题讨论】:
-
那么这里的实际问题是什么——解析输入列表并仅返回当前日期在该行的最新日期之后的行?