完了していない履歴アクティビティのログファイルを取得しようとしています。たとえば、「ID 1234で活動を開始しています...」を記録して成功すると、次の行は「活動1234完了」になります。
その「完了」行が後に出ない「開始...」行を取得しようとしています。
ログファイルの例
Starting activity for ID 1234
ID 1234 completed successfully
Starting activity for ID 3423
ID 3423 completed successfully
Starting activity for ID 9876
ID 9876 completed successfully
Starting activity for ID 99889
ID 99889 completed successfully
Starting activity for ID 10011
ID 10011 completed successfully
Starting activity for ID 33367
Starting activity for ID 936819
ID 936819 completed successfully
この例では、次のような出力が必要です。
Starting activity for ID 33367
…その後に「完了」の行がないからです。
私はこれを使って多くの成功をgrep
収めませんでした。awk
これらのツールのいずれかを使用することは可能だと思いますが、私のgrep
能力はawk
まだ進歩していません。
私に必要な結果を提供するための迅速で信頼性の高いgrep
モードを探しています。awk
ベストアンサー1
代替方法は次のとおりですawk
。
awk '
/^Starting/ { I[$5] = $0 }
/^ID/ { delete I[$2] }
END { for (key in I) print I[key] }
' infile
出力:
Starting activity for ID 33367
連想配列は、I
示されたIDを追跡する。