gnu sort 的平台/版本独立排序

gnu sort 的平台/版本独立排序

我正在尝试对两个不同系统上生成的两个列表进行离线比较。它们都具有 GNU coreutils,因此为了帮助比较差异,我sort在传输它们之前对两个列表进行了排序。

我注意到这两种实现的排序标准不同。LANG 的值最初确实不同,但协调它们似乎并没有改变任何事情。

例如,以下命令产生不同的输出:

LANG=C echo -e "a\n.a"|sort

首先,我得到:

.a
a

另一方面我得到了

a
.a

我还没有深入研究 coreutils 代码,但我怀疑这是由于依赖于操作系统的排序 API,但是有没有办法强制 GNU 排序在各个平台上进行一致排序?

请注意,我意识到我可以将文件传输到其中一个并在那里进行排序,这很可能是我短期内会做的事情,但我想知道是否有办法避免这种情况。

在这种情况下,这两个系统是 Cygwin64 和 Synology 开发的任何系统。它们都标识为 GNU sort(分别为 8.26 和 8.30):

Cygwin:

$ sort --version
sort (GNU coreutils) 8.26
Packaged by Cygwin (8.26-2)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and Paul Eggert.

Synology:

$ sort --version
sort (GNU coreutils) 8.30
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and Paul Eggert.

相关内容