【Lifehacks】データリストの一意化を行う

■タスク
 データリストに含まれるデータから重複を排除し一意化を行う。


■背景
・各種作業の前処理として良く必要となる処理。
・なるべく簡単に実施したい。


■方法
 Cygwin32/UNIX互換ツールのsort、uniqコマンドを利用。


■メモ
 例えばアクセスログ中に現れるユーザIDが何種類あるかを知りたい場合などデータ分析の結果として、または中間補助データとして、データリスト中のデータの一意化を行いたい場合があります。
 元のデータリストから注目データを抽出し、1データ1行の形にした後であれば、sortとuniqの組み合わせで一意化が簡単に処理できます。

 データによってはアルファベットの大文字・小文字を区別しない場合もあるため、状況に応じてオプション指定を使い分けます。
 以下のプログラムは大文字・小文字を区別する・しない場合の両方の処理をまとめて行うバッチスクリプトです。


■使用方法

> SgUniqList.bat


■プログラム

:
: SgUniqList.bat
: データリストの一意化を行う。
:
: Author: Orihika Ikuo
: Create: 2009.12.01
: Update: 2009.XX.XX
:

set Cygwin=C:\0_Software\cygwin\bin
set Sort=%Cygwin%\sort

set Input=Input.txt
set Output01_Case=Output01_Case.txt
set Output02_IgCase=Output02_IgCase.txt

%Sort%    < %Input% | uniq    | %Sort% -f > %Output01_Case%
%Sort% -f < %Input% | uniq -i             > %Output02_IgCase%

注:
Windows環境ではWindowsのsortコマンドと区別するためCygwin32のパスを明記している。
・Output01_Caseは大文字・小文字を区別した結果。
・Output02_IgCaseは大文字・小文字を区別しない結果。