初歩的ではあるのですが、join コマンドというのは、個人的には他の人が使っているのを見たことがないレベルの不遇のコマンドです。一言で言えば、(ファイルがソートされていることを前提に) 2 つのファイルの inner join を取ることができます。
一日毎にログを取っているようなケースを想定します。ログファイルは例えば以下のようになります。
$ head 120{6,7}.dat ==> 1206.dat <== 2012/12/06 10:00 10 20 2012/12/06 10:01 11 21 2012/12/06 10:02 12 22 ==> 1207.dat <== 2012/12/07 10:00 110 220 2012/12/07 10:01 111 221 2012/12/07 10:02 112 222
このログファイルの 3 カラム目を 12/06 と 12/07 で比較したい、みたいなときに join を使用することができます。このようなケースでは、既に時刻順にソートされている第 2 カラムを join のキーにして(-1 2 オプション + -2 2 オプション)、join コマンドを実行すれば良い。
-o は出力するカラムを指定していて、"0" は join のキー、"1.3"、"2.3" は、それぞれ 1 つ目のファイルの第 3 カラムと 2 つ目のファイルの第 3 カラムを意味しています。
$ join -1 2 -2 2 -o 0,1.3,2.3 120{6,7}.dat 10:00 10 110 10:01 11 111 10:02 12 112