로그 파일 처리 [닫기]

로그 파일 처리 [닫기]

여기에 이미지 설명을 입력하세요. 다음과 같은 로그 파일이 있습니다. 이제 =hours=를 얻을 수 있습니다.date +'%H'

cat file | awk '{print $2}' cut -d: -f1과 같은 것을 사용하여 몇 시간 안에 로그인 시간을 얻을 수 있습니다.

파일의 로그인 시간(시간 단위)을 현재 시간(시간 단위)과 비교하여 로그인 시간이 5시간보다 큰지 확인하고 해당 기준과 일치하는 기록만 표시할 수 있는 방법이 있습니까?

오후 3시(15시간)라고 가정하면 로그인 시간이 5시간 미만이므로 아래를 표시하고 싶지 않습니다.

11:26:16 로그인에 성공했습니다. yden8703 gkU3Qx4iiWPVMrV

12:26:24 로그인에 성공했습니다. pxia9495 2OVvMrAmgRAOZyJ

답변1

 awk -v argsec=$((5*60*60)) '
        BEGIN{ nowsec=systime() }
      { logsec=mktime(gensub(/[-:]/," ","g",$1" "$2));
        if(nowsec-logsec<=argsec) print;
      }' logfile

BEGINawk의 블록 에 5시간을 초로 변환할 수 있지만 arg 변수에 넣는 것이 더 유연해 보입니다.

답변2

로그 파일에서 시간이 05:00:00보다 큰 열 2의 로그인 행을 가져오려면 다음을 시도하십시오.

awk '$2+0>=5' logfile

관련 정보