Chinaunix

标题: awk格式化时间 [打印本页]

作者: reb00t    时间: 2015-07-07 17:22
标题: awk格式化时间
日志文本
Jul 7 16:45:01  a  ....
Jul 7 16:45:05  b  ...
Jul 7 16:45:13 c  ....
Jul 7 16:45:21  d  ...

转换成
2015-07-07 16:45:01
2015-07-07 16:45:05
2015-07-07 16:45:13
2015-07-07 16:45:21

awk求方法
作者: reyleon    时间: 2015-07-07 17:26
重启老师, 你居然发帖, 是几个意思?
作者: expert1    时间: 2015-07-07 17:28
不知道date能否转换成那个格式?
可以的话awk 然后system 一下。
作者: expert1    时间: 2015-07-07 17:30
或者awk BEGIN部分定义个数组jun=07

给个例子
http://blog.chinaunix.net/uid-20778583-id-34042.html
作者: reb00t    时间: 2015-07-07 17:37
本帖最后由 reb00t 于 2015-07-07 17:38 编辑
  1. awk 'function ff(t){"date +%s -d \""t"\""|getline ft;return strftime("%F %T",ft)}{t=sprintf("%s %s %s", $1,$2,$3);print ff(t)}
复制代码
大致写了下,感觉一个简单的时间格式化,是不是整复杂了。
作者: reyleon    时间: 2015-07-07 17:42
回复 5# reb00t


    妈蛋, 既然都调用date了, 直接打印啊
  1. awk '{NF=3;cmd="date -d \""$0"\" \"+%F %T\"";cmd|getline dt;print dt;close(cmd)}' file
复制代码

作者: reb00t    时间: 2015-07-07 17:45
回复 6# reyleon


    擦,六子老师牛逼,
作者: reyleon    时间: 2015-07-07 17:50
回复 7# reb00t


    擦, 充气老师好挫
作者: reyleon    时间: 2015-07-07 18:03
  1. awk -v y=2015 '{  
  2.     a["Jan"]=01;
  3.     a["Feb"]=02;
  4.     a["Mar"]=03;
  5.     a["Apr"]=04;
  6.     a["May"]=05;
  7.     a["Jun"]=06;
  8.     a["Jul"]=07;
  9.     a["Aug"]=08;
  10.     a["Sep"]=09;
  11.     a["Oct"]=10;
  12.     a["Nov"]=11;
  13.     a["Dec"]=12;
  14.     split($3,b,":")
  15.     print strftime("%F %T", mktime(y" "a[$1]" "$2" "b[1]" "b[2]" "b[3]))
  16. }' file
复制代码
重启老师, 这个速度快
作者: reb00t    时间: 2015-07-07 18:10
回复 9# reyleon


    六子老师请收下菜鸟的膝盖~
作者: 关阴月飞    时间: 2015-07-07 19:02
楼上一对好基友,基光四射!!!!!1
作者: songyc_2015    时间: 2015-07-07 19:36
楼上两位大神在公开调(出)戏(柜),不忍直视
作者: 刺客阿地    时间: 2015-07-08 11:32
好基友调情中。。。
作者: 聆雨淋夜    时间: 2015-07-08 17:56
awk '{system("echo "$1" "$2" "$3"|date -f - +\"%Y-%m-%d %H:%M:%S\"")}' file
2015-07-07 16:45:01
2015-07-07 16:45:05
2015-07-07 16:45:13
2015-07-07 16:45:21
我是不是写的很麻烦啊,重启老师。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2