对于后跟下划线的大写字母,排序命令无法按预期工作

sort command not working as expected for uppercase letters followed by underscore

我正在整理用户名列表。当字母是小写时,排序命令按预期工作。

小写的预期和实际输出:

n
n_123
na
na_123

当字符为大写且后跟下划线时,事情会变得很奇怪。

大写的预期输出:

N
N_123
NA
NA_123

使用排序的大写实际输出:

N
NA
NA_123
N_123

我想我可以使用

解决这个问题
env LC_COLLATE=C sort $file

但没有骰子。

使用env的实际输出LC_COLLATE=C排序:

N
NA
NA_123
N_123

我是 运行 GNU bash,版本 4.4.12(1)-release (x86_64-apple-darwin16.3.0) on Mac OS X 10.12.3

如有任何帮助,我们将不胜感激。

下划线是 ASCII 95,它位于所有大写字母 (A-Z) 之后,即 65-90。所以在排序中大写字母总是排在 _.

之前

如果你想在 _ 处定界,那么你可以使用 -t _ 来获得预期的输出:

sort -t _ -k1,1 file
N
N_123
NA
NA_123

您的 sort 命令使用小写字母的原因是因为小写字母出现在 _ 之后,即 97-122