NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: bin/51726: sort -n ignored if given after -k



The following reply was made to PR bin/51726; it has been noted by GNATS.

From: Robert Elz <kre%munnari.OZ.AU@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: bin/51726: sort -n ignored if given after -k
Date: Sun, 18 Dec 2016 15:23:38 +0700

     Date:        Sun, 18 Dec 2016 02:05:01 +0000 (UTC)
     From:        David Holland <dholland-bugs%netbsd.org@localhost>
     Message-ID:  <20161218020501.468347A302%mollari.NetBSD.org@localhost>
 
   |  If you're using -k you're supposed to put the key flags in the -k
   |  argument, that is, sort -k 3nr.
 
 Not quite, using global options is still fine, they're just not
 supposed to apply to a key specified if that key has any sort selections
 of its own.
 
 Our sort doesn't do that, it merges global options and key specific
 options, in a kind of weird way --- but the behaviour described (while
 perhaps not strictly correct) is I think what is intended.
 
 That is, when sorting a key field, you get whatever sort options are
 specified for that key, merged with whatever global options had already
 been given - later global options are supposed to affect the next key
 (or the backup default sort if the keys are equal).   That is, that's how
 the NetBSD sort is written.
 
   |  Technically I think if you write -k 3 -n -r and it doesn't honor the
   |  -n it's doing what you asked.
 
 According to our sort's design, yes, though I don't think that is posix.
 
   | And I think if you write -k 3 -n -r and
   | it *does* sort in reverse order, then *that*'s a bug. sigh.
 
 Yes, probably.
 
   |  sort's argument handling is a trainwreck.
 
 That mild?
 
   |  And thus the code in sort that deals with it is horrifying.
 
 Yes.   We could probably simplify it a lot if we made it posix
 conformat (where any key specific ordering options disable all
 the globals for that key) but it has been as it is for a long time
 now (mayve even, modulo the k stuff) has been like it since 6th or
 7th edition unix.   So changing it might break a lot - who knows?
 
   | I know why POSIX wanted to get rid of "sort +3", but it *worked*...
 
 That change is actually a separate isue, and other than that people tend
 not to really understand what the key selection stuff does, that works
 as well.   And the +3 variant is still there as well...
 
 kre
 
 


Home | Main Index | Thread Index | Old Index