对于大写字母后跟下划线,sort命令无法正常工作

问题描述 投票:1回答:1

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

小写的预期和实际输出:

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排序的实际输出:

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)

任何帮助将非常感激。

bash sorting collation collate
1个回答
4
投票

下划线是ASCII 95,它来自所有大写字母(A-Z),即65-90。所以在排序大写字母总是会出现在_之前。

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

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

你的sort命令使用小写字母的原因是因为小写字母来自_,即97-122

© www.soinside.com 2019 - 2024. All rights reserved.