목록에서 마지막 순간 날짜 행 가져오기

목록에서 마지막 순간 날짜 행 가져오기

사용자 목록과 마지막 로그인 날짜가 포함된 입력 파일이 있는 경우 함수를 사용하여 sort | awk마지막 순간 행을 선택하려면 어떻게 해야 합니까?

날짜는 특정 +%H:%M:%S형식으로 기록됩니다.

예:

George 12:00:15 
Max    12:01:03 
Kate   10:32:54 
Adam   08:21:47 
Andrea 12:00:10

현재 날짜는12:01:04

if 함수의 결과는 첫 번째, 두 번째 및 다섯 번째 행이 됩니다.

답변1

그리고 :GNU dateawk

awk -F'[ :]+' -v l=$(date -d '1 minutes ago' "+%H:%M") -v c=$(date "+%H:%M") '
    $2":"$3==l || $2":"$3==c
' file
George 12:33:15 
Max    12:33:03 
Andrea 12:33:10

답변2

GNU awk 사용:

awk 'BEGIN{t=strftime("%T",systime()-60)}$NF >= t'

답변3

bashGNU date(대부분의 Linux 시스템의 기본값)를 사용하여 다음을 수행할 수 있습니다 .

threshold=$(( $(date -d 12:01:04 +%s) - 60 ))
paste file <(awk '{ print $2 }' file | date -f - +%s) |
  awk '$3 > '"$threshold"' { print $1,$2 }'

또는 형식을 유지하려면 질문의 예를 따르십시오.

threshold=$(( $(date -d 12:01:04 +%s) - 60 ))
paste file <(awk '{ print $2 }' file | date -f - +%s) |
  awk '$3 > '"$threshold" |
  cut -c 1-15

산출:

George 12:00:15
Max    12:01:03
Andrea 12:00:10

실제 예를 들어 날짜를 "1분 전"으로 설정할 수도 있습니다(Gnouc의 답변을 기반으로 함). 첫 번째 줄은 다음과 같습니다.

threshold=$(date -d '1 minute ago' +%s)

관련 정보