【Lifehacks】2つのリストから和・差・積集合を求める

タスク:
・2つのリストファイルから、和(重複なくマージ)、差(どちらか一方のみに含まれる)、積(共通部分)集合を求める。


ソリューション:
・CygWin32(Unixコマンド)のsort、uniqを組み合わせて実現。


用途:
・データログから文書IDを抽出後、登録・削除の動きを追跡。
・破壊されたDBと、古いバックアップから、無理やり復旧。
・ちょっとだけ取得タイミングが異なった二つのデータを整理。
・等々

:
: SgCmpList.bat
: -- 2つのリストから、和・差・積集合を求める。
:
: Author: Orihika Ikuo
: Create: 2007.03.26
: Update: 2007.XX.XX
:
: Note:
: ・入力ファイルは、1アイテム1行のリストファイルとする。
: ・入力ファイル中で重複行はないものとする。
:
:::: Input
set List01=List01.txt
set List02=List02.txt

:::: Output
set Union=Union.txt
set Intsec=Intsec.txt
set Only01=Only01.txt
set Only02=Only02.txt

cat %List01% %List02% | sort | uniq    > %Union%
cat %List01% %List02% | sort | uniq -d > %Intsec%
cat %List01% %Intsec% | sort | uniq -u > %Only01%
cat %List02% %Intsec% | sort | uniq -u > %Only02%