3番目に成功したログイン試行のユーザー名を印刷します。

3番目に成功したログイン試行のユーザー名を印刷します。

次のログファイルがありますが、3回目の試みで正常にログインしたユーザーの名前を印刷したいと思います。

cat login.log
user1:failed
user2:failed
user3:success
user1:failed
user2:failed
user4:success
user5:failed
user2:success
user3:failed
user6:success
user1:success
user3:success
user4:success
user4:success
user5:failed
user5:failed
user1:success
user2:failed

予想される出力は次のとおりです。

user1
user2

ベストアンサー1

努力する

awk -F: '/failed/ { f[$1]++;} /success/ && f[$1]==2 { print ; f[$1]=0 ; }'

どこ

  • -F::区切り文字として使用
  • /failed/ { f[$1]++;}ユーザーログイン失敗回数の計算
  • /success/ && f[$1]==2 { print $1; f[$1]=0 ; }条件に応じて結果を印刷します。

コメントに従って特別な名前がある場合(読みやすくするために改行)

awk -F: '$2 == "failed" { f[$1]++;} 
         $2 == "success" && f[$1]==2 { print ; f[$1]=0 ; }'

おすすめ記事