来自gnu排序的意外结果

use*_*338 6 unix sorting gnu-sort

当我尝试对以下文本文件'input'进行排序时:

test1 3   
test3 2
test 4
Run Code Online (Sandbox Code Playgroud)

用命令

sort input
Run Code Online (Sandbox Code Playgroud)

输出正好是输入.这是输出

od -bc input
Run Code Online (Sandbox Code Playgroud)

:

0000000 164 145 163 164 061 011 063 012 164 145 163 164 063 011 062 012
          t   e   s   t   1  \t   3  \n   t   e   s   t   3  \t   2  \n
0000020 164 145 163 164 011 064 012
          t   e   s   t  \t   4  \n
0000027
Run Code Online (Sandbox Code Playgroud)

它只是一个带有两列的制表符分隔文件.当我做

sort -k 2
Run Code Online (Sandbox Code Playgroud)

输出变为

test3 2
test1 3
test 4
Run Code Online (Sandbox Code Playgroud)

这是我所期待的.但如果我这样做

sort -k 1
Run Code Online (Sandbox Code Playgroud)

关于输入没有任何变化,而我希望'test'在'test1'之前排序.最后,如果我这样做

cat input | cut -f 1 | sort
Run Code Online (Sandbox Code Playgroud)

我明白了

test
test1
test3
Run Code Online (Sandbox Code Playgroud)

正如所料.对此有合理的解释吗?默认情况下应该做什么排序,例如:

sort -k 1
Run Code Online (Sandbox Code Playgroud)

我的排序版本:

sort (GNU coreutils) 7.4
Run Code Online (Sandbox Code Playgroud)

Ale*_*kov 7

从手册页:

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

所以似乎导出LC_ALL = C必须有所帮助