首页 > 解决方案 > 排序命令(MacOS 终端)给出不一致的结果

问题描述

sort 的手册页说

 -u, --unique
        Unique keys.  Suppress all lines that have a key that is equal to
        an already processed one.

但是我得到了我不理解的行为。当我对第 1 列进行排序时,-u 似乎不起作用,当我对第 2 列进行排序时,它可以正常工作,当我对第 3 列进行排序时,它可以正常工作。显然,要么它坏了,要么我很困惑。(可能是后者)。

$ cat tosort.txt
1   A   a
3   A   a
1   B   a
2   B   b
3   B   a
$ cat -t tosort.txt
1^IA^Ia
3^IA^Ia
1^IB^Ia
2^IB^Ib
3^IB^Ia
$ sort tosort.txt -t$'\t' -k 1 -u
1   A   a
1   B   a
2   B   b
3   A   a
3   B   a
$ sort tosort.txt -t$'\t' -k 2 -u
1   A   a
1   B   a
2   B   b
$ sort tosort.txt -t$'\t' -k 3 -u
1   A   a
2   B   b
$

这是一个包含三列的 5 行文件,由制表符分隔。当我对第 1 列进行排序并找到唯一键时,它会返回所有行,按第 1 列排序,即使只有 3 个唯一键。当我排序并找到第 2 列的唯一键时,它返回按第 2 列排序的 3 行,即使只有 2 个唯一键。当我排序并找到第 3 列的唯一键时,它返回 2 行,按预期排序。

标签: bashmacosterminal

解决方案


推荐阅读