Linux

Linux排序的預設順序是什麼?

  • January 4, 2017

很長一段時間,我認為程序的預設行為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’,你會得到未定義的行為。

引用自:https://unix.stackexchange.com/questions/43465