次のログファイルがあります。これで=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