6

当我尝试对以下文本文件“输入”进行排序时:

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 到底应该做什么,例如:

sort -k 1

?

我的排序版本:

sort (GNU coreutils) 7.4
4

1 回答 1

7

从手册页:

* 警告 * 环境指定的语言环境会影响排序顺序。设置 LC_ALL=C 以获得使用本机字节值的传统排序顺序。

所以看来export LC_ALL=C必须有帮助

于 2010-04-22T15:30:01.693 回答