comm
UNIXコマンドで2つのファイルの差分を取りたいとします。
普通diffを使いますね。
でも自動処理したい場合はdiffの出力は引用符がつくので厄介です!!
たとえば、ファイルAと、ファイルAの内容を包含するファイルBとの間の差分Xを出力し、別コマンドに渡す場合など。
この場合はcommコマンドを使います。
くわしくは、manを参照。
commは各ファイルに対して固有の行および両ファイルに共通の行を、表示したり抑制したりします。
たとえばcomm -13 A.txt B.txt とやると引数指定した2番目のファイル(B.txt)にだけある行が出力されます*1。
ではファイルAのみに存在する行とファイルBのみに存在する行がある状態で、いずれか片方のファイルにだけある行を表示したい場合は、どうか?
お分かりですね。comm -13 A.txt B.txtの出力とcomm -23 A.txt B.txtの出力をあわせればいいんですね。
*1:これはファイルの中の各行がユニークである前提ですけど、uniq -uを使って重複行を排除する手も使えますね。