次の形式の2つのログファイル(input.log
および)があるとします。output.log
2012-01-16T12:00:00 12345678
最初のフィールドは処理タイムスタンプで、2番目のフィールドは一意のIDです。私は見つけようとしています:
- その
input.log
IDに対応するレコードがないレコードoutput.log
input.log
そのIDのレコードが含まれているが、タイムスタンプの差が5秒を超えるレコード
MySQLを使用した回避策がありますが、理想的にはデータベースコンポーネントを削除し、シェルスクリプトで処理したいと思います。
IDが含まれているinput.log
場合、列が追加されたの行を返す次のものがあります。output.log
join -a1 -j2 -o 0 1.1 2.1 <(sort -k2,2 input.log) <(sort -k2,2 output.log)
出力例:
10111 2012-01-16T10:00:00 2012-01-16T10:00:04
11562 2012-01-16T11:00:00 2012-01-16T11:00:10
97554 2012-01-16T09:00:00
主な質問:
この情報を入手したので、2つのタイムスタンプの差を計算し、5秒以上離れたタイムスタンプを破棄するにはどうすればよいですか?ISO 8601タイムスタンプをdate
(具体的にはT
)で処理する際にいくつかの問題が発生し、より良い方法があるはずだと思いました。
二次質問:
awk
たとえば、アプローチ全体を1つのスクリプトに作り直す方法はありますか?複数のファイルを処理し、出力条件に対して正しい不等式を設定するという私の知識が、ここでの制限要因でした。したがって、上記のアプローチです。