uniqコマンドを2バイトコードに対して使うときには気をつけよう
問題
BOWを作成するのに,sortやuniq,nlコマンドを使ってぱぱーっとやってしまうことが多々
その際,丸囲み文字など一部の(異なる)文字が同じものとして扱われ,削除されてしまうことがある
解法
LC_COLLATE=C
を設定する
これだとダメ
% cat tmp | tr " " "\n" | sort | uniq
こうする
% cat tmp | tr " " "\n" | sort | LC_COLLATE=C uniq
おまけ?
ファイルtmpは半角スペースで分かち書きされたなにかが,1行1文書で記述されていると仮定
上述のユニークな単語集合を作成するものに加えて,以下のようにしてBoWを作成
% cat tmp | tr " " "\n" | sort | LC_COLLATE=C uniq | nl -n ln -s , > bow