Chinaunix首页 | 论坛 | 博客
  • 博客访问: 70749
  • 博文数量: 41
  • 博客积分: 12
  • 博客等级: 民兵
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-25 22:21
文章分类
文章存档

2014年(9)

2013年(7)

2012年(25)

我的朋友

分类: LINUX

2013-05-05 14:38:38

有网友遇到这样一个问题:日志的时间都记录错了,每条日志都慢了12个小时,所以想恢复每条日志的时间。当然用awk和python之类的更高级的语言会简单些。他的要求是使用sed,所以这里就给一个sed的解法。
日志样本:
    
  1. 1.1.1.1 20120523045959 /xxx/xxx.do?product=xxx&xxx=8.6 - "xxxx/1.6.0 (Linux; U; xxxx1.0.4; xxxBuild/xxx)"
sed代码:

  1. sed -nr 'h;s#^([^ ]* )(.{8})(..)(..)(..)(.*)$#echo -n \1 $(date -d "\2 \3:\4:\5 12hours" +"%Y%m%d%H%M%S")#e;G;s/\n[^ ]* .{14}//p'
执行结果:

  1. [root@station1 ~]# echo '1.1.1.1 20120523045959 /xxx/xxx.do?product=xxx&xxx=8.6 - "xxxx/1.6.0 (Linux; U; xxxx1.0.4; xxxBuild/xxx)"' | sed -nr 'h;s#^([^ ]* )(.{8})(..)(..)(..)(.*)$#echo -n \1 $(date -d "\2 \3:\4:\5 12hours" +"%Y%m%d%H%M%S")#e;G;s/\n[^ ]* .{14}//p'
  2. 1.1.1.1 20120523165959 /xxx/xxx.do?product=xxx&xxx=8.6 - "xxxx/1.6.0 (Linux; U; xxxx1.0.4; xxxBuild/xxx)"

阅读(708) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~