2
我有一个示例文件在每个单独的包含“aA0_-”字符。使用GNU排序它提供了以下排序顺序:不一致的排序行为
$ cat /tmp/sample | sort
_
-
0
a
A
追加一些其他的字符后,我们得到了一个不同的顺序(非字母数字字符似乎有较低的优先级):
$ cat /tmp/sample | sed 's/$/x/' | sort
0x
ax
Ax
x
_x
-x
而当我们将这个字符插入到开头,我们获得原始排序顺序:
$ cat /tmp/sample | sed 's/^/x/' | sort
x
x_
x-
x0
xa
xA
..这种行为的解释是什么?
UPDATE
'z
' 时和 'Z
' 字符被纳入样本,结果似乎还不必遗憾,毕竟
$ cat /tmp/sample | sed 's/$/x/' | sort
0x
ax
Ax
x
_x
-x
zx
Zx
..但对正确答案的光,这是因为所有'','
_
'和'-
'都是当前语言环境(en_US.UTF-8)中的空格,并且在排序时不会被忽略。
你的语言环境是什么? – 2010-07-18 00:07:32
@ [Sanjay Manohar]区域设置为en_US.UTF-8。嗯,很好的提示;) – mykhal 2010-07-18 00:09:25