Linux整行排序不正确

Linux整行排序不正确,linux,bash,shell,sorting,posix,Linux,Bash,Shell,Sorting,Posix,我想用linux命令对文件进行整行排序sort 我的文件cat hello #_ * #1 #_ * #1 使用sort hello运行时 #_ * #1 #_ * #1 因为在asccii表中,#位于*之前,所以我的预期结果是 #_ #1 * 有人能解释为什么吗?谢谢。默认情况下,gnu排序不按字节排序,也就是说,不会遵循ascii表中的顺序。检查此示例: kent$ cat f1 a b c A B C kent$ sort f1 a A b B c C

我想用linux命令对文件进行整行排序
sort

我的文件
cat hello

#_
*
#1
#_
*
#1
使用
sort hello运行时

#_
*
#1
#_
*
#1
因为在asccii表中,
#
位于
*
之前,所以我的预期结果是

#_
#1
*

有人能解释为什么吗?谢谢。

默认情况下,gnu排序不按字节排序,也就是说,不会遵循ascii表中的顺序。检查此示例:

kent$  cat f1
a
b
c
A
B
C

kent$  sort f1          
a
A
b
B
c
C
如果希望排序按字节排序,可以设置
LC\u ALL

kent$  LC_ALL=C    
kent$  sort f1
A
B
C
a
b
c
因此,使用
LC_ALL=C
,您也可以获得预期的输出

kent$  cat f
#_
*
#1

kent$  sort f
#1
#_
*
更新 我刚刚查看了手册页,它也逐字说明了这一点:

*警告*环境指定的区域设置会影响排序顺序。设置LC_ALL=C以获取使用 本机字节值


我的输出是
#1
然后
*
然后
#
@stephanmg您的系统可能与OP有不同的本地化设置。@Kent:是的,我试图鼓励OP思考
排序
是如何工作的,或者研究手册/实现。@stephanmg哦。。。我不明白你的意图,我的错,对不起。好吧,肯特,那么这可能不是很明显。我只是认为这是一个很容易研究的问题,因为正如你也指出的,人们只需要使用
man
。(我应该先彻底检查哪一个)