我正在寻找 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
。