Linux中awk比较时间,linux – 用AWK增加日期几天和几个月

使用AWK增加日期

大家好,我需要你的帮助.我有一个文件“test.csv”,我想增加“6个月”和“10天”的日期,以便我得到以下输出:

test.csv:

"000001","TEST1","2013-05-07 16:02:07","ACTIVE"

"000003","TEST3","2013-05-09 16:02:07","ACTIVE"

"000004","TEST4","2013-05-10 16:02:07","ACTIVE"

"000005","TEST5","2013-05-11 12:02:07","ACTIVE"

输出test-increment-10days.csv:

"000001","TEST1","2013-05-07 16:02:07","ACTIVE","2013-05-17 16:02:07"

"000003","TEST3","2013-05-09 16:02:07","ACTIVE","2013-05-19 16:02:07"

"000004","TEST4","2013-05-10 16:02:07","ACTIVE","2013-05-20 16:02:07"

"000005","TEST5","2013-05-11 12:02:07","ACTIVE","2013-05-21 12:02:07"

输出test-increment-6months.csv:

"000001","TEST1","2013-05-07 16:02:07","ACTIVE","2013-11-07 16:02:07"

"000003","TEST3","2013-05-09 16:02:07","ACTIVE","2013-11-09 16:02:07"

"000004","TEST4","2013-05-10 16:02:07","ACTIVE","2013-11-10 16:02:07"

"000005","TEST5","2013-05-11 12:02:07","ACTIVE","2013-11-11 12:02:07"

我用这个命令试了一下:

awk -F”\”,\”” ‘{{ cmd=”date \”+%Y-%m-%d %T\” -d \””$3″ +10 days\””; cmd | getline datum; close(cmd); print $0 “,\””datum”\””}}’ test.csv > test-increment-10days.csv

awk -F”\”,\”” ‘{{ cmd=”date \”+%Y-%m-%d %T\” -d \””$3″ +6 months\””; cmd | getline datum; close(cmd); print $0 “,\””datum”\””}}’ test.csv > test-increment-6months.csv

但我得到了错误的输出.

测试递增,10days.csv:

"000001","TEST1","2013-05-07 16:02:07","ACTIVE","2013-05-08 16:02:07"

"000003","TEST3","2013-05-09 16:02:07","ACTIVE","2013-05-10 16:02:07"

"000004","TEST4","2013-05-10 16:02:07","ACTIVE","2013-05-11 16:02:07"

"000005","TEST5","2013-05-11 12:02:07","ACTIVE","2013-05-12 12:02:07"

测试递增,6months.csv:

"000001","TEST1","2013-05-07 16:02:07","ACTIVE","2013-06-07 16:02:07"

"000003","TEST3","2013-05-09 16:02:07","ACTIVE","2013-06-09 16:02:07"

"000004","TEST4","2013-05-10 16:02:07","ACTIVE","2013-06-10 16:02:07"

"000005","TEST5","2013-05-11 12:02:07","ACTIVE","2013-06-11 12:02:07"

“test-increment-10days.csv”中的日期仅增加一天,而“test-increment-6months.csv”中的日期仅增加一个月.希望有人可以提供帮助.

解决方法:

试试这个:

awk -F"\",\"" '{cmd="date -d \"$(date -d \""$3"\")+10days\" \"+%Y-%m-%d %T\"";cmd | getline datum; close(cmd); print $0 ",\""datum"\""}' test.csv > test-increment-10days.csv

基础日期命令的示例是:

date -d "$(date -d '2013-05-07 16:02:07')+10days" "+%Y-%m-%d %T"

有两个日期命令.内部日期创建具有指定值的日期.然后添加10天.外部日期创建一个新的递增日期并对其进行格式化.

标签:date,unix,linux,csv,awk

来源: https://codeday.me/bug/20190529/1178059.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值