WindowsとUNIXではsortの順番が違う!
下記内容のテキストファイル(sorttest.txt)があるんだけど、
adminuser1 adminUSER1 admin_usr1 admingroup adminGroup
Windows (XP Professional x64 Edition)上でsortコマンドでsortしてみると、
C:\Documents and Settings\kawanishi\デスクトップ>sort sorttest.txt admin_usr1 admingroup adminGroup adminuser1 adminUSER1
root@localhost:/tmp>sort sorttest.txt adminGroup adminUSER1 admin_usr1 admingroup adminuser1
うーむむむ…。
Windowsのヘルプとサポートによると、
◆Sort
http://www.microsoft.com/technet/prodtechnol/windowsserver2003/ja/library/ServerHelp/58617202-cd86-425c-99ac-0589c083e4af.mspx?mfr=true
大文字と小文字
sort コマンドでは、大文字小文字は区別されません。
ASCII文字コード表を見てみると、
◆ASCII文字コード : IT用語辞典 e-Words
http://e-words.jp/p/r-ascii.html
記号「_」(アンダースコア)は英大文字と小文字の間にあるから、UNIXでの並び替えが本来正しい筈なんだよな…。
UNIXのsortコマンドは、fオプションをつけると大文字小文字を同一視してくれるのだが…。
root@localhost:/tmp>sort -f sorttest.txt adminGroup admingroup adminUSER1 adminuser1 admin_usr1
…うーん、大文字小文字では大文字が先になって、「_」は英文字の後になるのか。
Windowsの方は大文字小文字を区別してくれるオプションは…上記ヘルプを見てもどこにも乗ってないこの割り切りよう。
HDDの中のファイルシステムの一覧じゃなくて、テキストファイルの大文字小文字も無視しやがりますかWindowsは。
(いわゆる半角の)英数字だけのsortでもこれだけ悩ましい違いがあるとは…。