ユーザーリストと最後のログイン日を含む入力ファイルがある場合は、関数を使用して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関数の結果は、最初、2番目、および5番目の行になります。
答え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)