linux的异常行为';s排序命令
在Linux shell上,linux的异常行为';s排序命令,linux,shell,sorting,Linux,Shell,Sorting,在Linux shell上,echo-e“arrays2\narrays 2\narrays 32”| sort的结果是 arrays 2 arrays2 2 arrays3 2 arrays2 28 arrays 28 arrays3 28 而echo-e“arrays2 28\narrays 28\narrays3 28”排序的结果是 arrays 2 arrays2 2 arrays3 2 arrays2 28 arrays 28 arrays3 28 为什么在第二种情况下,字
echo-e“arrays2\narrays 2\narrays 32”| sort的结果是
arrays 2
arrays2 2
arrays3 2
arrays2 28
arrays 28
arrays3 28
而echo-e“arrays2 28\narrays 28\narrays3 28”排序的结果是
arrays 2
arrays2 2
arrays3 2
arrays2 28
arrays 28
arrays3 28
为什么在第二种情况下,字符串arrays2 28
出现在第一行。
这是虫子,还是我错过了什么
我在RHEL4和Ubuntu11.04上试过这个
谢谢。如果您将语言环境从en_US.utf8更改为旧的默认设置,它将按照您期望的方式工作:
echo -e "aaa\nfoo\narrays2 28\narrays 28\narrays3 28" | LC_ALL=C sort -
aaa
arrays 28
arrays2 28
arrays3 28
foo
该行为取决于区域设置:
echo -e "arrays2 28\narrays 28\narrays3 28" | LANG=C sort
印刷品
arrays 28
arrays2 28
arrays3 28
印刷品
arrays2 28
arrays 28
arrays3 28
阵列2 28
阵列28
阵列3 28
(请注意,必须安装区域设置才能产生此效果,如果区域设置不存在,行为将与LANG=C
相同)。Mysort
的行为与此不同。您使用的是哪个发行版?我的发行版@MKo:你所在的地区是什么?尝试echo$LANG