2013-07-13 1 views
0

시간의 차이를 찾을 수는/var/log/메시지쉘 스크립팅은 "WAM1"와 "WAM2"아래에서 최근 연속 발사 사이의 시간 차이 (단 초)을 찾는 데 도움이 필요 특정 시나리오

WAM1는 2013-07-09T02:20:10.735639Z 발사 및 WAM2에 대한 2013-07-09T02:20:12.635639Z 이제 최근 한 2013-07-09T02:20:12.635639Z 그렇게 (15.84675 - 12.635639)= 3.211111 사이의 차이는 아래의 프로그램은 위의 로그 메시지

에 대한 잘못된 결과를 제공

2013-07-09T02:20:10.735639Z user.info WbAppMg WAM1 
2013-07-09T02:20:11.817372Z user.info sam SAM 
2013-07-09T02:20:12.635639Z user.info WbAppMg WAM1 
2013-07-09T02:20:13.817372Z user.info sam SAM 
2013-07-09T02:20:14.818442Z user.info sam SAM 
2013-07-09T02:20:15.846751Z user.info WbAppMg WAM2 
2013-07-09T02:20:16.846636Z user.info sam SAM 
2013-07-09T02:20:16.848751Z user.info WbAppMg WAM2 
2013-07-09T02:20:17.851727Z user.info sam SAM 
2013-07-09T02:20:18.935639Z user.info WbAppMg WAM1 
2013-07-09T02:20:19.535639Z user.info WbAppMg WAM1 
2013-07-09T02:20:20.817372Z user.info sam SAM 
2013-07-09T02:20:21.818442Z user.info sam SAM 
2013-07-09T02:20:22.746751Z user.info WbAppMg WAM2 
2013-07-09T02:20:23.846636Z user.info sam SAM 
2013-07-09T02:20:24.851727Z user.info sam SAM 

초의 결과입니다

+0

원하는 출력을 게시하십시오! 그리고 가능한 한 많은 코너 케이스를 커버하는 샘플 입출력을 사용해보십시오. – janos

답변

1

시도 다음 코드를

awk '/WAM1/{ split($1,start,/[:Z]/); wam1=start[3] } 
/WAM2/{ split($1,stop,/[:Z]/); wam2=stop[3]; print "Delta "++x" = "wam2-wam1}' 1 

이 코드 수율 :

Delta 1 = 3.21111 
Delta 2 = 4.21311 
Delta 3 = 3.21111 

또 다른 코드 :

awk '/WAM1/{ split($1,start,/[:Z]/); wam1=start[3]; i=1; } 
/WAM2/{ split($1,stop,/[:Z]/); wam2=stop[3]; if (i==1) print "Delta "++x" = "wam2-wam1; i=0;}' 1 

수율 :

Delta 1 = 3.21111 
Delta 2 = 3.21111 
+0

이지만 델타 2는 델타 1 WAM1 값을 사용합니다.이 장면에서는 2 델타 값만 3 델타 값이되지 않아야합니다. – santy

+0

@ 산 토쉬, 다른 버전을 추가했습니다. – falsetru

관련 문제