Linux排序错误

时间:2014-02-18 11:40:37

标签: linux sorting

当我在这样的输入上运行时,使用Linux Sort时出现问题:

07TLF\1\1\10040
07TLF\1\1\10060
07TLF03\10060
07TLF03\10080
07TLF\1\1\10320
07TLF\1\1\10360
07TLFS\10280

(\ 1是Ctrl + A字符)。你可以看到第3和第4行是错误的(应该是第5和第6行)。 如果我使用LC_COLLATE = C一切顺利!但在其他类似情况下,即使我使用不同的LC_COLLATE,排序也能正常工作。

我在使用 system 系统调用的C程序中使用sort,但是也在bash中运行我有相同的行为。

你能帮帮我吗? THX

1 个答案:

答案 0 :(得分:0)

从sort(1)的联机帮助页:

NAME
       sort - sort lines of text files

我不认为,Ctrl + A是任何名为“文本文件”的文件的一部分。如果您有特殊要求 - 作为排序特殊字符 - 您必须使用服务于该要求的实用程序,或者如果不存在则自行实现它。

由于没有特殊字符的“自然顺序”,您将无法定义您想要的订单。您可以设置区域设置以使排序符合其中定义的规则,或者如果所有区域设置都不符合您的要求,则必须实现自己的排序算法。

顺便说一下:如果可以避免使用系统,那么根本不是一个好主意。您可能永远不知道目标系统上安装了哪个版本的排序以及使用了哪些规则。