来自gnu排序的意外结果

时间:2010-04-22 14:45:35

标签: sorting unix gnu-sort

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

test1 3   
test3 2
test 4

使用命令

sort input

输出正好是输入。这是

的输出
od -bc input

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

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

sort -k 2

输出变为

test3 2
test1 3
test 4

这是我所期待的。但是如果我做的话

sort -k 1

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

cat input | cut -f 1 | sort

我得到了

test
test1
test3

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

sort -k 1

我的排序版本:

sort (GNU coreutils) 7.4

1 个答案:

答案 0 :(得分:7)

从手册页:

  

*警告* 环境指定的区域设置会影响   分类          订购。设置LC_ALL = C以获取使用的传统排序顺序   本地人          字节值。

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