排序在区分大小写的排序中表现得很奇怪

排序在区分大小写的排序中表现得很奇怪

排序与我预期的排序不同。我有这个文件,称之为text.txt

a   1
A   1
a   11

(空间始终为一\t

我想按第一列的字母顺序对它们进行排序。然而,当我这样做时

sort -k 1 text.txt

我得到的只是 text.txt 文件,未排序。如果我用不推荐使用的符号来做+ -,意思是

sort +0 -1 text.txt

它按预期工作,这意味着我得到以下输出:

a   1
a   11
A   1

仅当我的行仅因大小写不同时,才会出现这种奇怪的行为。我究竟做错了什么?

答案1

您还必须指定结束列:

$ sort -k1,1 text.txt
a       1
a       11
A       1

引用GNU 排序手册页:

   -k, --key=POS1[,POS2]
          start a key at POS1 (origin 1), end it at POS2 (default  end  of
          line)

答案2

您肯定遇到了一个错误sort!如果文件中没有空格,则无法对其进行正确排序:

$ cat aaa
a1
A1
a11

$ sort aaa
a1
A1
a11

$ sort -k1,1 aaa
a1
A1
a11

通过以下内容更加明显:

$ cat bbb
A B b 0
a B b 0
A b b 1

$ sort bbb
a B b 0
A B b 0
A b b 1

$ sort -k1,2 bbb
a B b 0
A b b 1
A B b 0

相关内容