有网友遇到这样一个问题:日志的时间都记录错了,每条日志都慢了12个小时,所以想恢复每条日志的时间。当然用awk和python之类的更高级的语言会简单些。他的要求是使用sed,所以这里就给一个sed的解法。
日志样本:
-
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代码:
-
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'
执行结果:
-
[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'
-
1.1.1.1 20120523165959 /xxx/xxx.do?product=xxx&xxx=8.6 - "xxxx/1.6.0 (Linux; U; xxxx1.0.4; xxxBuild/xxx)"
阅读(4580) | 评论(0) | 转发(1) |