Linux
Linux排序的預設順序是什麼?
很長一段時間,我認為程序的預設行為
sort
是使用 ASCII 順序。sort
但是,當我在沒有任何參數的情況下輸入以下行時:# @
我有:
@ #
但是根據 ASCII 表,
#
是 35 和@
64。另一個例子是:A a
輸出是:
a A
有人可以解釋一下嗎?順便說一句,使用時什麼是“字典順序”
sort -d
?
看起來您使用的是非 POSIX 語言環境。
嘗試:
export LC_ALL=C
然後
sort
。
info sort
清楚地說:(1) 如果您使用非 POSIX 語言環境(例如,通過將
LC_ALL' 設置為
en_US’),那麼sort' 可能會產生與您習慣的排序不同的輸出。在這種情況下,將“LC_ALL”環境變數設置為“C”。請注意,僅設置“LC_COLLATE”有兩個問題。首先,如果同時設置了“LC_ALL”,它是無效的。其次,如果
LC_CTYPE’(或LANG',如果
LC_CTYPE’ 未設置)設置為不兼容的值,它具有未定義的行為。例如,如果LC_CTYPE' 是
ja_JP.PCK’ 但LC_COLLATE' 是
en_US.UTF-8’,你會得到未定義的行為。