我有一个文件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
但是它不起作用。
答案 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
打印回输入文件的原始格式。