Sort

為什麼排序折疊案例以及獲得區分大小寫的選項是什麼?

  • November 20, 2019

我正在嘗試區分大小寫對列表字元串進行排序,但列表以不區分大小寫的順序出現。用於排序的 man 或 –help 資訊給了我一個 -f 或 –ignore-case 選項,但沒有列出用於不敏感地排序以覆蓋似乎是預設順序的選項。我檢查以確保沒有為排序定義別名。

為什麼排序預設操作是一個選項讓我選擇的東西,為什麼沒有記錄選項來覆蓋該預設值?

進一步檢查使它看起來像是在進行字典排序,因為它似乎忽略了標點符號。無論如何,我希望它表現得像它應該預設的那樣,或者至少給我 CLI 覆蓋以使其表現得像它應該的那樣。

排序 –version 排序 (GNU coreutils) 8.4

我認為是 Centos 6。

這取決於您的語言環境(這在 Debian/GNU 系統上):

$ printf '%s\n' B A b a | LC_COLLATE=en_US.UTF-8 sort 
a
A
b
B
$ printf '%s\n' B A b a | LC_COLLATE=C sort 
A
B
a
b

GNU sort 的手冊頁提到了這一點:

*** 警告 ***環境指定的語言環境會影響排序順序。設置LC_ALL=C以獲取使用本機字節值的傳統排序順序。

LC_COLLATE是影響排序的選項,而LC_ALL是 overkill 開關,它會覆蓋所有其他LC_*選項。

請注意,至少在en_US.UTF-8這不是不區分大小寫的排序中,因為無論原始順序如何,它都會a在之前排序。A

locale命令應顯示有效的語言環境。

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