로그에는 전송 시간과 수신 시간(밀리초)의 두 필드가 있으며 이 두 필드 간의 차이점을 찾아야 하며 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'