使用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