一尘不染

排序未按预期排序(空格和语言环境)

linux

我想通过linux对文本文件进行排序sort,如下所示

v 1006
v10 1
v 1011

我期望这样的结果:

v 1006
v 1011
v10 1

但是,sort即使使用各种选项,也使用,该v10 1行仍在中间。为什么?我会理解v10 1位于底部还是顶部(取决于空格字符是小于还是大于1),但是出于什么原因却将其保留在中间呢?


阅读 200

收藏
2020-06-03

共1个答案

一尘不染

它使用系统区域设置来确定字母的排序顺序。我的猜测是,根据您的语言环境,它会忽略空格。

$ cat foo.txt 
v 1006
v10 1
v 1011
$ LC_ALL=C sort foo.txt
v 1006
v 1011
v10 1
$ LC_ALL=en_US.utf8 sort foo.txt
v 1006
v10 1
v 1011
2020-06-03