设置希尔排序中的排序顺序以不忽略特殊字符

设置希尔排序中的排序顺序以不忽略特殊字符

我正在寻找 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_COLLATELC_ALL但如果设置了 ,它将优先于所有特定LC_值。如果 和 均未LC_ALL设置LC_COLLATE,则将转而使用LANG。如果如果未设置,则默认为 locale C

相关内容