로그 파일 항목과의 시간 차이 계산

로그 파일 항목과의 시간 차이 계산

로그에는 전송 시간과 수신 시간(밀리초)의 두 필드가 있으며 이 두 필드 간의 차이점을 찾아야 하며 2초보다 큰 경우 쉘 스크립트 또는 Linux 명령을 사용하여 이 로그를 인쇄해야 합니다.

2017-01-27 object1(sendtime-1486743904359 ,recdtime-  1486743904500)
2017-01-27 object2(sendtime-1486743904800 ,recdtime-  1486743908000)

내 로그 파일에는 위의 보내기/받기 시간 기준에 따라 필터링하고 "sendobject" 키워드가 포함된 로그만 포함해야 하는 다른 줄도 포함되어 있습니다. 전송된 요청 및 수신된 요청과 같은 기타 요청은 무시되어야 합니다.

로그 세부정보--

2017-01-27 [Info]Delta Cache sendobject (empId-emp1, joindate-456,dealdate-123,sendtime-1527348020000 ,recdtime-1527348028000, salary-1k,amtpaid-EUR)
2017-01-27 [Info]Delta Cache sendobject (empId-emp2, joindate-456,dealdate-123,sendtime-1527348073000 ,recdtime-1527348074000, salary-1k,amtpaid-AUD)
2017-01-27 [Info]Requestsent| (empId-emp1, joindate-456,dealdate-123,sendtime-1527352812000 ,recdtime-1527352820000, salary-1k,amtpaid-INR)
2017-01-27 [Info]Delta Cache sendobject (empId-emp3, joindate-456,dealdate-123,sendtime-1527349111000 ,recdtime-1527349112000, salary-1k,amtpaid-GBP)
2017-01-27 [Info]Delta Cache sendobject (empId-emp4, joindate-456,dealdate-123,sendtime-1527349370000 ,recdtime-1527349375000, salary-1k,amtpaid-CAD)
2017-01-27 [Info]Requestrecicved| (empId-emp1, joindate-456,dealdate-123,sendtime-1527352812000 ,recdtime-1527352820000, salary-1k,amtpaid-INR)
2017-01-27 [Info]Delta Cache sendobject (empId-emp6, joindate-456,dealdate-123,sendtime-1527352812000 ,recdtime-1527352820000, salary-1k,amtpaid-INR)
2017-01-27 [Info]DBupdated| (empId-emp1, joindate-456,dealdate-123,sendtime-1527352812000 ,recdtime-1527352820000, salary-1k,amtpaid-INR)

답변1

당신 과 함께 awk라면 다음과 같은 일을 할 수 있습니다:

awk -F"[- ,)]" '$(NF-1)-$5 >2000' infile
2017-01-27 object2(sendtime-1486743904800 ,recdtime-  1486743908000)

여기서 우리는 다음의 집합을 정의합니다.하이픈, 공백, 쉼표 및 닫는 괄호필드 구분자로.

수정된 질문에 답하려면 다음을 시도해 보세요.

awk -F"[- ,]" '/sendobject/ && $18-$15 >2000' infile

답변2

변종@αГsнιι의 답변:

awk -F'(sen|rec)dtime-' 'NF==3 && $3 - $2 > 2000'

또는 로그에 이러한 줄 외에도 다양한 줄이 포함되어 있으면 입력을 다음과 일치시키는 것이 더 제한될 수 있습니다 perl.

perl -ne 'print if m{
    ^\d{4}-\d\d-\d\d\s+
    object\d+\(
       sendtime-(\d+)\s*,
       recdtime-\s*(\d+)
    \)$}x && $2 - $1 > 2000'

관련 정보