ログファイルの処理[閉じる]

ログファイルの処理[閉じる]

ここに画像の説明を入力してください。 次のログファイルがあります。これで=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

BEGINawkのブロックに5時間を秒に変換できますが、arg変数に入れる方が柔軟です。

おすすめ記事