sortでの"--month-sort"オプションとLANG環境変数
sortでの"--month-sort"オプションとLANG環境変数
sortでCLFをsort。年と月、時間、分、秒数という順番でsort。ところが、なぜか月の部分でsortできない現象。
たとえばこういう元データがあったとして、
10.0.1.1 - - [01/Mar/2019:06:44:13 +0900] 10.0.1.1 - - [01/Jan/2019:06:44:13 +0900] 10.0.1.1 - - [01/Feb/2019:06:44:13 +0900]
これに対してこんなsortコマンドを叩く。
$ sort -t'[' -k2.4,2.6M mmm
mmmが上記データファイルですね。
'['をデリミタに設定。第二カラム([の中身)の4文字目から6文字目でsort。Mオプションを追記して--month-sortにしてねと指定する。
そうすると、結果はこんなのがでてくる。
10.0.1.1 - - [01/Feb/2019:06:44:13 +0900] 10.0.1.1 - - [01/Jan/2019:06:44:13 +0900] 10.0.1.1 - - [01/Mar/2019:06:44:13 +0900]
うーん、alphabeticalにsortしてるように見える。なんでだ。sortのmanを再度見てみる。
-M, --month-sort compare (unknown) < 'JAN' < ... < 'DEC'
あってるはずだなぁ。大文字じゃないといけないとか?とおもって、大文字で揃えてみても同じ結果。
JANとかDECとか、、dateコマンドの結果だよな。。とここまで考えて、そうか、LANG変数かなと思いつく。
$ export LANG=C
とLANG環境変数を設定してから、上記sortを実行。ちゃんとsortできました。