Chinaunix首页 | 论坛 | 博客
  • 博客访问: 906298
  • 博文数量: 75
  • 博客积分: 1216
  • 博客等级: 少尉
  • 技术积分: 1998
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-11 16:20
个人简介

优秀是一种习惯

文章分类

全部博文(75)

文章存档

2014年(1)

2013年(29)

2012年(45)

分类: LINUX

2013-04-25 14:56:00

有网友遇到这样一个问题:日志的时间都记录错了,每条日志都慢了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)"

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