Join

join コマンドは、UNIXやLinuxシステムで使用されるコマンドの一つで、複数のファイルの対応する行を結合するために使います。通常、join コマンドは、テキストファイルを操作する際に利用されます。事前に結合するファイルがソートされていることが強く推奨されます。ソートされていない場合、正しい結合が行われない可能性があります。

逆に言えば、ソートされている必要があるので、注意

外部結合

join -a 1 -1 1 -2 1 f1 f2

f2にひとつ重複キーがある場合は、11行となる。

  • -t
    • 区切り文字を指定:オプションなし半角空白
    • -t ‘,’
  • -o
    • 出力するフィールドを指定:指定なしの場合全て出力
    • ‘0,1.2,2.3’ -> 0がキー、1.2はf1の2列目、f2の3列目
    • 空白は入れない
  • -a
    • 対応するものがなくても出力するファイル:外部結合

ファイル準備

for f in $(seq 10)
do
echo "$f value$f"
done | sort > f1

cat <<EOF > f2
0 value2-0 value0
2 value2-2 value2
6 value2-6 value6
9 value2-9 value9
EOF