アプリケーションのログファイルがあり、正常にログインできなかったユーザーのみをフィルタリングする必要があります。 (ユーザーID以降は登録可能です。)
ログファイルには次のエントリがあります。
user2
user5
user7
user1
user1
user1 ok
user8
user9
user3
user3 ok
予想される出力は次のようになります。
user2
user5
user7
user8
user9
私の考えでは:
sed "/user/N;/ok/d"
結果がない続いて「ユーザー1」が表示されます。
user2
user5
user7
user1
user8
user9
ベストアンサー1
あなたの質問を間違った方法で理解しない限り、これはうまくいきます。
$ grep -v -f <(grep " ok$" aa.txt |cut -d' ' -f1) aa.txt
user2
user5
user7
user8
user9
効果的にファイル内の「正常」とマークされたすべての名前を見つけ、これらの名前をパターンとして使用して、同じファイルから除外して「異常」ログインを取得します。
これは、user1が最終的に正常にログインしたため(3回の試行後も)、user1は失敗と見なされず、すべてのuser1の試行が除外されるという事実に基づいています。
grep -v: パターンの除外
grep -f: ファイルからパターンを読み込む、成功したログインを保存するプロセスの置換は次のとおりです。
PS1:aa.txtファイルは、私があなたのデータを貼り付けたローカルファイルの1つです。
更新:okの前にスペースを
使用すると、ログイン<(grep " ok$" aa.txt |cut ...)
に失敗しましたが、名前に「ok」を含むユーザー名が一致しません(例:Bangokユーザー)。