使用awk向日期添加一个月

时间:2018-11-14 07:36:58

标签: linux shell awk

我有一个文件1.txt,如下所示:

"15227962157615645"$"2018-12-04 06:55:43"
"15227525816721347"$"2018-12-03 18:48:11"

我可以使用以下方式获取日期:

awk -F\" '{print $4}' 1.txt

此外,我需要在日期前加上一个月。对于上述输入,我想要的输出将是:

2019-01-04 06:55:43
2019-01-03 18:48:11

我尝试使用

awk -F\" '{print date -d "$4 +1 month"+%Y-%m-%d}' 1.txt

但是它不起作用。

1 个答案:

答案 0 :(得分:1)

Awk对日期计算的支持有限,因此这是一个依赖date命令的仅限bash的解决方案:

IFS='$';
while read n t; do 
  printf '%s$"%s"\n' "$n" "$(date -d "${t//\"/} +1 month" '+%F %T')"
done <file

将输入字段分隔符设置为$,以使时间进入$t变量。

使用bash参数扩展${t//\"/}删除日期字段的双引号。

这允许将+1 month关键字传递给date

然后printf打印回输入文件的原始格式。