イベントを表す一連のタイムスタンプがあります。たとえば、次のようになります。
20150401_1120 // event a
20150401_1211 // event b
一連のログファイルである各ログファイルは固定期間を表し、その期間の開始時にタイムスタンプが表示されます。たとえば、次のようになります。
$ ls | egrep -o [0-9]{8}_[0-9]{4}
以下を提供します。
20150401_1100
20150401_1120 // contains event a
20150401_1140
20150401_1200 // contains event b
20150401_1220
イベントを含むログファイル(イベントと同じタイムスタンプまたは最も近い古いタイムスタンプ)をインポートしたいと思います。これを効率的に実行できるコマンドやコツはありますか?
効率的であるということは、文を書く必要がないという意味です。 :)
答え1
ue
イベントタイムスタンプのあるファイルとul
ログのあるファイルを呼び出してみましょう。
私は非常に直感的な方法を思いついた。
( awk '{printf "%s a\n",$1 }' ul ; awk '{printf "%s b\n",$1 }' ue ) |\
sort |\
awk '/b/ { print before ;} /a/ { before=$1 ;} '
どの
- イベントとタイムスタンプのリストにラベルを追加すると、どのラベルでも使用できますが、ログファイルのラベルはイベントラベルの前になければなりません。 (*)
- ソートごとにマージします。
- awk は古いログファイルを検索します。
結果:
20150401_1120
20150401_1200
(*)一部のスマートsort
オプションは、ユーザーが最初の列を昇順に並べ替え、2番目の列を降順に並べ替えることがあります(タイムスタンプが一致する場合は、「イベント」の前に「ログ」を配置します)。