我想以如下格式输出日期...
01/01/2020
02/01/2020
03/01/2020
04/01/2020
05/01/2020
06/01/2020
07/01/2020
08/01/2020
09/01/2020
10/01/2020
11/01/2020
12/01/2020
13/01/2020
14/01/2020
15/01/2020
16/01/2020
17/01/2020
18/01/2020
19/01/2020
20/01/2020
21/01/2020
22/01/2020
23/01/2020
24/01/2020
25/01/2020
26/01/2020
27/01/2020
28/01/2020
29/01/2020
30/01/2020
目前我正在使用...
cal 01 2020 | grep -v "[A-Z][a-z]"| tr ' ' '\n' | sort -n | awk '$1~/[0-9]/ { printf "%02s/%02s/%4s\n",$1,"01","2020"}'
我希望上述格式用于01/01/2017
。31/12/2019
我该怎么做
上面的脚本首先使用 GNU
date
获取开始日期中午的 UNIX 时间戳(它将是1483268400
)。然后它会迭代,直到找到并输出结束日期。在每次迭代中,我们递增timestamp
86400 秒(24 小时)。日期字符串是使用内置
printf
实用程序 in生成的bash
,该实用程序能够使用其%(...)T
格式(这需要bash
4.3 或更高版本)从 UNIX 时间戳格式化日期时间字符串。它还使用 直接打印到thedate
变量-v
。在一些没有 GNU 的系统上
date
,您可以date
使用另一种格式的命令行参数通过本机实用程序获取开始日期的时间戳。例如,在 OpenBSD 上,它是通过man date
在您的特定 Unix 上查看。awk
也可以使用的一些扩展实现:但是,如果您有这样的
awk
(GNUawk
或mawk
),那么您不妨在 中完成整个操作awk
:您需要添加一个嵌套的 for 循环,其中包含当年和下个月的第一次迭代。对于每个月,您将执行您已经完成的操作,在 awk 末尾打印月份和年份。