GNU 区分大小写排序

GNU 区分大小写排序

Ubuntu 10.04(Lucid)中的实用sort程序始终不区分大小写地排序,就像您指定--ignore-case的那样。

The two sort just give the same result: 

echo -e "c\nb\nB\na" | sort
echo -e "c\nb\nB\na" | sort --ignore-case

但有时我想按大小写区分排序,即大写字母在前,小写字母在后。可以吗?

答案1

覆盖排序顺序。

echo -e "c\nb\nB\na" | LC_COLLATE=C sort

答案2

有趣的是,还有另一种排序顺序,如下所示:

echo -e "c\nb\nB\na" | LC_COLLATE=C sort --ignore-case

将大写字母置于其对应的小写字母之前。

以下是它们在语言环境中的输出比较(我添加了“d”和“D”)en_US.UTF-8(被覆盖的地方除外):

  1. echo -e "d\nD\nc\nb\nB\na" | sort
  2. echo -e "d\nD\nc\nb\nB\na" | sort --ignore-case
  3. echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort
  4. echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort --ignore-case

输出:

1   2   3   4
-   -   -   -
a   a   B   a
b   b   D   B
B   B   a   b
c   c   b   c
d   d   c   D
D   D   d   d

相关内容