我正在排序用户名列表。当字母为小写时,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)
任何帮助将非常感激。
下划线是ASCII 95
,它来自所有大写字母(A-Z
),即65-90
。所以在排序大写字母总是会出现在_
之前。
如果你想在_
上划分,那么你可以使用-t _
来获得预期的输出:
sort -t _ -k1,1 file
N
N_123
NA
NA_123
你的sort
命令使用小写字母的原因是因为小写字母来自_
,即97-122