免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2078 | 回复: 3
打印 上一主题 下一主题

awk里面转换时间格式 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-11 08:51 |只看该作者 |倒序浏览
请教:200701表示2007年的第一周(第一天是星期一),如何转化为2007年第一周星期一的时间


200701 ---> 2005-01-01
200702 ---> 2005-01-08
200810 ---> ......

谢谢

论坛徽章:
0
2 [报告]
发表于 2008-05-11 13:09 |只看该作者
#!/bin/sh
if [ $# -ne 1 ] ; then
  echo "Usage: `basename $0` [YYYYWW]"
  echo "For example: `basename $0` 200801"
  exit
fi

Year=`echo $1|cut -c1-4`
WW=`echo $1|cut -c5,6`

rm -rf ww.tmp
for i in 1 2 3 4 5 6 7 8 9 10 11 12 ; do
eval "cal $i $Year" | tail +3 | cut -c4,5|sed -e 's/ //g' -e '/^$/d'|awk '{print '$i',$0}' >>ww.tmp
done

awk '{ if ( NR == '${WW}') print }' ww.tmp

~ $ ./dayofweek.sh 200851
12 22
输出的就是12月22日,第51周周一。

不好意思,修改了Year=`echo $1|cut -c1-4`

[ 本帖最后由 小鹭 于 2008-5-11 13:37 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-05-11 13:15 |只看该作者
08年的12月20日是星期六...

论坛徽章:
0
4 [报告]
发表于 2008-05-11 14:01 |只看该作者
bash-3.2$ echo "200701
200702
200710
200810
"|gawk '
$1~/^[0-9]+/ && length($0)>=6{
   v5=strftime("%w",mktime(substr($1,1,4)" 01 01 12 00 00"));
   v4=mktime(substr($1,1,4)" 01 "substr($1,5,2)*7-6" 12 00 00");
   v3=strftime("%Y %m %d 12 00 00",v4+(v5+6)%7*(24*3600));
   v1=strftime("%Y-%m-%d",mktime(v3));
   print $0,"对应的周一为",v1,"(v3=",v3,"v5=",v5,")";
}'
200701 对应的周一为 2007-01-01 (v3= 2007 01 01 12 00 00 v5= 1 )
200702 对应的周一为 2007-01-08 (v3= 2007 01 08 12 00 00 v5= 1 )
200710 对应的周一为 2007-03-05 (v3= 2007 03 05 12 00 00 v5= 1 )
200810 对应的周一为 2008-03-05 (v3= 2008 03 05 12 00 00 v5= 2 )
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP