@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

joinコマンドでSQLのLEFT OUTER JOINのようなことをする

tl;dr

join -a 1 -e NULL -o auto file1 file2

-e で穴埋めする内容を指定し、-a で優先する(SQLでいうLEFTに当たる)ファイルを指定する。

-a 1なら1つ目のファイルの行数を維持して(LEFT OUTER JOIN)、-a 2なら2つ目のファイルの行数を維持する(RIGHT OUTER JOIN)。

お察しの通り-a 1 -a 2と両方指定すると FULL OUTER JOINのように双方欠損があれば埋める。

-o autoはJOIN時のON句にあたるようなもので、どの列をキーとして引き当てるかを指定できる。まずはautoでよい。

参考

詳しくはこのページを参照のこと。

上記以外にもベン図つきでかなりわかりやすく、SQLとjoinコマンドの対応をまとめてある。

alexharv074.github.io