(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Unicode順】数字英字カタカナひらがな漢字の順にsortする

スポンサーリンク

やりたいこと

UNIX環境にて以下のような文字列のファイルを

$ cat testmoji.txt
Apple
りんご
イチゴ
15
メロン
葡萄
いちじく
Banana

Unicode順(数字→英字→片仮名→平仮名→漢字)に並べ替える。

環境情報
$ sort --version
sort (GNU coreutils) 8.26
$ echo $LANG
ja_JP.UTF-8

やり方

sortコマンドにLANG=ja_JP.Unicodeを付与する。

$ cat testmoji.txt | LANG=ja_JP.Unicode sort
15
Apple
Banana
いちじく
りんご
イチゴ
メロン
葡萄

以下、補足です。

補足

日本語が入っているファイルに対してsortを行う際は文字コードに気を遣う必要があります。

例えば以下のようなUTF-8 Unicode形式のファイルを

$ file testmoji.txt
testmoji.txt: UTF-8 Unicode text

そのままsortで並び替えすると以下のようになります。

$ cat testmoji.txt | sort
15
Apple
Banana
イチゴ
いちじく
メロン
りんご
葡萄

上記結果は、あいうえお順という観点では正しいものの状況によっては表題のような順序で並べ替えて欲しい時があります。

そのような場合は「jp_JP.Unicode」とコマンド単位でLANG情報を変更することで取得したい結果を得ることができます。
以上、ご参考になれば幸いです。