Sorry maybe I didn't speak clearly, I want to sort on the whole line by each character from left to right, not only the 5 fields。

And why I use the same command "sort test.txt" and same input "test.txt" on the 2016 Mac pro or on the windows10 , the result both are :

20171012|3|2059517|-|8|-|20-24|2|-|2.0|2.0
20171012|3|2059517|-|8|-|20-24|2|-|2.0|2.0
20171012|3|2059517|-|82|-|25-29|2|-|13.0|12.0
20171012|3|2059517|-|82|-|25-29|2|-|13.0|12.0

which are different from the Linux shell, and that is the correct result I want. Is that normal ?
The "sort" version on Mac pro is :
"sort (GNU coreutils) 5.93
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software.  You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and Paul Eggert."

I don't know why so I am look forward to receive your reply as soon as possible. 
Thank you very much!
Sincerely yours,
Frank
2017年10月16日 07:36Pádraig Brady<P@draigBrady.com> 写道:
forcemerge 28846 28847
tag 28846 notabug
close 28846
stop

On 15/10/17 01:03, Tree Big wrote:
> Dear coreutils :
> I am a Research and Development Engineer in IT. I met a situation when I
> use “sort” command in Linux shell which could be a bug for the "sort"
> command. So I hope you read this email, thank you !

> The whole command I used was :
> *sort test.txt*

> *And the result was :*
> 20171012|3|2059517|-|8|-|20-24|2|-|2.0|2.0
> 20171012|3|2059517|-|82|-|25-29|2|-|13.0|12.0
> 20171012|3|2059517|-|8|-|-2|-2|-|71.0|64.0
> 20171012|3|2059517|-|82|-|30-34|0|-|2.0|1.0

Since at least field 5 is variable width
you can't so a simple sort on the whole line.
I'm not sure exactly what field order you want
but you'll want something like:

  sort -t'|' -k1,1 -k5,5n

cheers,
Pádraig