我希望01
在这两种排序中都出现在第一个或最后一个,但实际上改变第二个记录的长度会改变排序顺序。为什么?
$ { echo 01; echo 0_12; } | sort
01
0_12
$ { echo 01; echo 0_1; } | sort
0_1
01
更糟糕的是,我疯了吗?
$ { echo 01_; echo 0_1; } | sort
0_1
01_
$ { echo 01__; echo 0_12; } | sort
01__
0_12
答案1
文档指出
环境指定的语言环境会影响排序顺序。设置 LC_ALL=C 可获得使用本机字节值的传统排序顺序。
一个解决方案可能是明确设置语言环境:
{ echo 01; echo 0_12; } | env -i LC_COLLATE=C sort }