代码之家  ›  专栏  ›  技术社区  ›  Sang

Linux整行排序不正确

  •  0
  • Sang  · 技术社区  · 5 年前

    sort .

    cat hello

    #_
    *
    #1
    

    与一起跑步时 sort hello

    #_
    #1个
    

    因为 # 站在前面 *

    #_
    #1
    *
    

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

    0 回复  |  直到 5 年前
        1
  •  2
  •   Kent    5 年前

    默认gnu排序 不是按字节排序的,也就是说, 不会遵循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以获取使用 本机字节值。