やりたいこと
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情報を変更することで取得したい結果を得ることができます。
以上、ご参考になれば幸いです。