リストを比較して、ない項目を抽出する。

IMG00016

※写真と本文は関係ありません。


join コマンドを使う。

それぞれのリストsortしてから、joinする。

$ cat pref.list # 県リストスペース区切り
saga 佐賀
nagasaki 長崎
kumamoto 熊本
oita 大分
miyazaki 宮崎


$ cat mixed.list # 雑多な地名リスト
kumamoto
america
canada
thai
saga

mixed.list(雑多な地名リスト)からpref.list(県名リスト)にないものを抽出したい場合。

$ join -v 1 <(cat mixed.list | sort -u ) <(cat pref.list | sort -u) america canada thai

※『sort -u』は unique オプション。

-v SIDE
like -a SIDE, but suppress joined output lines.
結合できなかった行だけ表示する。SIDEはどちらをベースにするかを選択する。

like -a SIDE と言われたので -a も試してみるとこうなる。
結合されたものも表示される

$ join -a 1 <(cat mixed.list | sort -u ) <(cat pref.list |sort -u) america canada kumamoto 熊本 saga 佐賀 thai

-a -v 付けないと、結合できたものだけ表示される

$ join <(cat mixed.list | sort -u ) <(cat pref.list |sort -u) kumamoto 熊本 saga 佐賀