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 佐賀