다음과 같은 로그 파일이 있습니다. 이제 =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
BEGIN
awk의 블록 에 5시간을 초로 변환할 수 있지만 arg 변수에 넣는 것이 더 유연해 보입니다.
답변2
로그 파일에서 시간이 05:00:00보다 큰 열 2의 로그인 행을 가져오려면 다음을 시도하십시오.
awk '$2+0>=5' logfile