データベースで言うところの INNER JOIN でしょうか。 実はそれ専用のプログラムとして join というのがあります。 (cat, cp などと同様、coreutils の1つです。) 行の順番に意味が無いのであれば、各入力を 結合するキーでソートしたうえで、joinコマンドを使うだけで OK です。 (Bashの場合) $ join -1 2 -o 1.1,0,2.2 <(sort -k 2 sample1.log) <(sort sample2.log) カラムの並びもどうでも良いなら -o オプションも不要です。 ちなみに、出力を sample1.log と同じ並び順で維持したい場合は、 提示されている sample1.log の場合、単に最後に出力をソートしなおしてやるだけで ok です $ join -1 2 -o 1.1,0,2.2 <(sort -k 2 sample