Date 使用awk,如何将日期转换为周和季度?

Date 使用awk,如何将日期转换为周和季度?,date,awk,date-formatting,week-number,date-manipulation,Date,Awk,Date Formatting,Week Number,Date Manipulation,使用awk,如何将日期(yyyy-mm-dd)转换为周和季度(周的第一天设置为星期一) 输入: a;2016-04-25;10 b;2016-07-25;20 c;2016-10-25;30 d;2017-02-25;40 想要的输出: a;2016-04-25;10;2016-w17;2016-q2 b;2016-07-25;20;2016-w30;2016-q3 c;2016-10-25;30;2016-w43;2016-q4 d;2017-02-25;40;2017-w8;2017-q1

使用awk,如何将日期(yyyy-mm-dd)转换为周和季度(周的第一天设置为星期一)

输入:

a;2016-04-25;10
b;2016-07-25;20
c;2016-10-25;30
d;2017-02-25;40
想要的输出:

a;2016-04-25;10;2016-w17;2016-q2
b;2016-07-25;20;2016-w30;2016-q3
c;2016-10-25;30;2016-w43;2016-q4
d;2017-02-25;40;2017-w8;2017-q1
awk解决方案:

awk -F';' '{ split($2,d,"-"); w = strftime("%W", mktime(d[1]" "d[2]" "d[3]" 00 00 00")); 
           q = int((d[2]+2)/3); 
           print $0,d[1]"-w"w,d[1]"-q"q}' OFS=';' file
输出:

a;2016-04-25;10;2016-w17;2016-q2
b;2016-07-25;20;2016-w30;2016-q3
c;2016-10-25;30;2016-w43;2016-q4
d;2017-02-25;40;2017-w08;2017-q1

  • 拆分($2,d,“-”)
    -按分隔符拆分第二个字段(
    日期

  • mktime(日期规范)
    -将日期规范(日期规范)转换为时间戳

  • strftime(“%W”,mktime(d[1]“d[2]”d[3]“00”)
    -根据
    %W
    (一年中的周数)格式化
    mktime()
    函数返回的时间

  • q=int((d[2]+2)/3)
    -计算季度数。本季度相当于3个月。我们用3作为除数

awk解决方案:

awk -F';' '{ split($2,d,"-"); w = strftime("%W", mktime(d[1]" "d[2]" "d[3]" 00 00 00")); 
           q = int((d[2]+2)/3); 
           print $0,d[1]"-w"w,d[1]"-q"q}' OFS=';' file
输出:

a;2016-04-25;10;2016-w17;2016-q2
b;2016-07-25;20;2016-w30;2016-q3
c;2016-10-25;30;2016-w43;2016-q4
d;2017-02-25;40;2017-w08;2017-q1

  • 拆分($2,d,“-”)
    -按分隔符拆分第二个字段(
    日期

  • mktime(日期规范)
    -将日期规范(日期规范)转换为时间戳

  • strftime(“%W”,mktime(d[1]“d[2]”d[3]“00”)
    -根据
    %W
    (一年中的周数)格式化
    mktime()
    函数返回的时间

  • q=int((d[2]+2)/3)
    -计算季度数。本季度相当于3个月。我们用3作为除数


您尝试了什么?我会使用
日期
来表示它(ISO周、周日/周一开始周等);do echo-n$f1;echo-n“;echo-n$f2;echo-n“;日期-d$f2+%V;完成<输入。。。。但是没有得到正确的报价。。不使用awk…:p@Markus添加您试图提问的代码而不是注释。。。请参见指定分隔符,您尝试了什么?我会使用
日期
来表示它(ISO周、周日/周一开始周等);do echo-n$f1;echo-n“;echo-n$f2;echo-n“;日期-d$f2+%V;完成<输入。。。。但是没有得到正确的报价。。不使用awk…:p@Markus添加您试图提问的代码而不是注释。。。请参见“指定”delimiters@EdMorton,是的,刚刚从我的“视野区域”中漏掉了@EdMorton,是的,刚刚从我的“视野区域”中漏掉了