Linux各ディストリビューションにおけるlocale設定によるソートの挙動の違い
はじめに
localeの設定の違いにより意図せず sort コマンドの結果が変わってしまうことがあったのでちょっと調べてみた
検証方法
dockerでbash動かして検証
以下でソートするファイルを作成
echo {a..z} {A..Z} - _ . , | tr ' ' '\n' | tee txt
各ディストリビューションの結果
Amazon Linux
bash-4.2# LANG=C sort txt | tr '\n' ' '; echo
, - . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
bash-4.2# LANG=en_US.UTF-8 sort txt | tr '\n' ' '; echo
_ - , . a A b B c C d D e E f F g G h H i I j J k K l L m M n N o O p P q Q r R s S t T u U v V w W x X y Y z Z
Amazon Linux 2
イメージ: amazonlinux:2
bash-4.2# LANG=C sort txt | tr '\n' ' '; echo
, - . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
bash-4.2# LANG=en_US.UTF-8 sort txt | tr '\n' ' '; echo
_ - , . a A b B c C d D e E f F g G h H i I j J k K l L m M n N o O p P q Q r R s S t T u U v V w W x X y Y z Z
Debian 11
イメージ: debian:11.6
root@9ca7376f8fd2:/# LANG=C sort txt | tr '\n' ' ';echo
, - . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
root@9ca7376f8fd2:/# LANG=en_US.UTF-8 sort txt | tr '\n' ' ';echo
, - . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
Ubuntu 22.04
イメージ: ubuntu:22.04
root@4e7c1581c1cb:/# LANG=C sort txt | tr '\n' ' ';echo
, - . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
root@4e7c1581c1cb:/# LANG=en_US.UTF-8 sort txt | tr '\n' ' ';echo
, - . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
CentOS 7
イメージ: centos:7
[root@4b1ca5267b59 /]# LANG=C sort txt | tr '\n' ' '; echo
, - . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@4b1ca5267b59 /]# LANG=en_US.UTF-8 sort txt | tr '\n' ' '; echo
_ - , . a A b B c C d D e E f F g G h H i I j J k K l L m M n N o O p P q Q r R s S t T u U v V w W x X y Y z Z
CentOS 8
イメージ: centos:8
[root@b23a0861c781 /]# LANG=en_US.UTF-8 sort txt | tr '\n' ' '; echo
, - . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@b23a0861c781 /]# LANG=C sort txt | tr '\n' ' '; echo
, - . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
Alpine
イメージ: alpine:3.17
d0ba3c597df1:/# LC_ALL=en_US.UTF-8 sort txt | tr '\n' ' ';echo
, - . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
d0ba3c597df1:/# LC_ALL=C sort txt | tr '\n' ' ';echo
, - . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
まとめ
- AmazonLinux, CentOS7で、Cとen_US.UTF-8でソート順が変わった
- 結構雑な検証なのでそもそもの何かが間違ってるかも