awk 命令输出最近一个月的所有日期
时间: 2023-07-06 22:26:35 浏览: 55
可以使用以下命令输出最近一个月的所有日期:
```
awk 'BEGIN{d="date +%Y-%m-%d"; for(i=0;i<31;i++){cmd=d" -d \""i" days ago\""; cmd|getline date; close(cmd); print date}}'
```
解析:
- `d="date +%Y-%m-%d"`:定义一个变量 `d`,保存日期格式化的命令。
- `for(i=0;i<31;i++)`:循环遍历近一个月的所有日期,从今天开始往前推 30 天。
- `cmd=d" -d \""i" days ago\""`:定义一个命令,通过 `date` 命令获取相对于今天 i 天前的日期。
- `cmd|getline date`:执行命令,并将输出结果赋值给变量 `date`。
- `close(cmd)`:关闭命令。
- `print date`:输出日期。
相关问题
如何在awk中使用date命令?我想打印出过去两个月的日期
您可以使用awk内置的系统命令来调用date命令。下面是一个示例代码,可以打印出过去两个月的日期:
```
awk 'BEGIN {
cmd="date +%Y-%m-%d --date=\"2 months ago\""
cmd | getline two_months_ago
close(cmd)
print "Two months ago was:", two_months_ago
}'
```
在上面的代码中,我们使用date命令来获取过去两个月的日期,并将其存储在变量`two_months_ago`中。然后,我们使用`print`语句将其输出到屏幕上。请注意,`--date`选项用于指定日期,`+%Y-%m-%d`选项用于指定日期格式。
这个示例代码仅供参考,您可以根据您的具体需求进行修改。
我想打印过去两个月的所有日期,不是两个月前的那一天
如果您想打印过去两个月的所有日期,您可以使用循环来遍历这段时间内的所有日期,并使用date命令来格式化日期。下面是一个示例代码,可以打印出过去两个月的所有日期:
```
awk 'BEGIN {
for(i=1; i<=60; i++) { # 遍历过去60天的日期
cmd="date +%Y-%m-%d --date=\"" i " days ago\""
cmd | getline date
close(cmd)
print date
}
}'
```
在上面的代码中,我们使用循环遍历过去60天的日期(即过去两个月),并使用date命令来格式化日期。我们将格式化后的日期存储在变量`date`中,并使用`print`语句将其输出到屏幕上。
请注意,上面的代码仅仅是一个示例,您可以根据您的具体需求进行修改。同时,如果您想要使用其他日期格式,您可以通过修改date命令中的选项来实现。