사용자 목록과 마지막 로그인 날짜가 포함된 입력 파일이 있는 경우 함수를 사용하여 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 date
awk
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
bash
GNU 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)