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