Linux全行排序未正确排序 更新

我想使用linux命令sort对文件进行全行排序。

我的文件cat hello

#_
*
#1

sort hello一起运行时

#_
*
#1

由于#在asccii表中的*之前,我的预期结果是

#_
#1
*

有人可以解释我为什么吗?谢谢。

benchimajun 回答:Linux全行排序未正确排序 更新

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

kent$  cat f1
a
b
c
A
B
C

kent$  sort f1          
a
A
b
B
c
C

如果您希望排序按字节排序,则可以设置LC_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以获取使用的传统排序顺序   本机字节值。

本文链接:https://www.f2er.com/3104328.html

大家都在问