1

我正在对用户名列表进行排序。当字母为小写时,排序命令按预期工作。

小写的预期和实际输出:

n
n_123
na
na_123

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

大写的预期输出:

N
N_123
NA
NA_123

使用sort的大写实际输出:

N
NA
NA_123
N_123

我以为我可以使用

env LC_COLLATE=C sort $file

但没有骰子。

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

N
NA
NA_123
N_123

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

任何帮助将非常感激。

4

1 回答 1

5

下划线是 ASCII95并且位于所有大写字母 ( A-Z) 之后,即65-90. 所以在排序大写字母时总会排在前面_

如果你想在_then 处进行分隔,你可以使用-t _来获得预期的输出:

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

您的sort命令使用小写字母的原因是因为小写字母在_ie之后97-122

于 2017-03-06T18:33:15.670 回答