GNU 区分大小写

Xiè*_*léi 46 linux

sortUbuntu 10.04 (Lucid) 中的实用程序总是按不区分大小写的方式排序,就像您指定--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
Run Code Online (Sandbox Code Playgroud)

但有时我想按区分大小写排序,所以先大写字母,然后是小写字母。是否可以?

Ign*_*ams 40

覆盖整理顺序。

echo -e "c\nb\nB\na" | LC_COLLATE=C sort
Run Code Online (Sandbox Code Playgroud)

  • 这有效,但根据定义,只有在没有外来字符时才有效。正在玩;他们将_after_ 7 位ASCII 字母排序;试试 `echo $'B\nÄ\nb\na' | LC_COLLATE=C 排序`。GNU `sort` 与非 `C` 语言环境 _always_ 执行不区分大小写的排序不应该被视为 _bug_ 吗? (6认同)

Den*_*son 17

有趣的是,还有另一种排序顺序是这样的:

echo -e "c\nb\nB\na" | LC_COLLATE=C sort --ignore-case
Run Code Online (Sandbox Code Playgroud)

它将大写字母放在其相应的小写字母之前。

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

  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
Run Code Online (Sandbox Code Playgroud)