排序与我预期的排序不同。我有这个文件,称之为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