
我正在尋找在 postgres 中排序的解決方案,但這似乎更多是排序問題,因此我提出了標準 Unix 排序命令的問題。
我有以下數據:
A_A1
A\A2
A_A2
A\A1
排序後我得到:
cat test.txt |sort
A_A1
A\A1
A_A2
A\A2
但我想要:
A_A1
A_A2
A\A1
A\A2
我也嘗試過LANG=C cat...
但沒有成功。那麼哪種排序規則可以讓我不忽略特殊字元呢?
答案1
從man sort
:
Set LC_ALL=C to get the traditional sort order that uses native byte values.
所以:
$ LC_ALL=C sort test.txt
A\A1
A\A2
A_A1
A_A2
所以 C 語言環境確實是按位元組值排序。
你需要做
$ cat test.txt | LC_ALL=C sort
如果您想像這樣透過管道傳輸它(但請始終嘗試直接使用檔案名稱(如果可用))。
影響此的主要環境變數是LC_COLLATE
.如果LC_ALL
設定了,它會優先於所有特定LC_
值。如果 和 均未LC_ALL
設置LC_COLLATE
,則返回LANG
。如果那未設置,預設為 locale C
。