Linuxでファイルを比較して片方にしかない内容のみ抜き出す

コンソール上でファイルを比較した際、片方にしかない行のみを抜き出したい場合があったので備忘として残しておく。

1.commコマンドを使う

一番簡単なのが、commコマンドを使ってやる方法だろう。
commコマンドでは、比較するファイルを引数で指定することで以下のように出力される。

comm --nocheck-order ファイル1 ファイル2

blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test1.txt
aaaa
bbbb
cccc
dddd

blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test2.tx...

なんとなしにネットサーフィンしていたところ、commコマンドというコマンドがあることを知ったのでどういったコマンドなのか調べてみた。
このコマンド、簡単に説明すると2つのファイルを比較して、片方だけにある行を1or2列目に、両方にある行を3列目に分割して出力してくれる、というコマンドだ。

最初から入っているので、そのまま使える。
なお、比較の際はファイルは文字列ソート(数字ソートだとダメらしい)されている必要があるらしい。

サンプルファイルを元に、実際にコマンドを実行した結果が以下。
1個目のファイルだけに存在する行は1列目、2個目のファイルのは2列目、共通行は3列目に出力される...