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