Subject: Re: bug#8442: sort command in Redhat 5 does not work

From: Eric Blake <[email-masked]>
Date: Thu, 07 Apr 2011 15:12:51 -0600

On 04/07/2011 01:40 PM, Jyotin Patel wrote:
> 
> Sort does not work on REdhat-AS5 ; it used to work on Redhat AS-3

> [root@cnprodedi01 mail]# cat /etc/redhat-release
> Red Hat Enterprise Linux Server release 5.6 (Tikanga)
> [root@cnprodedi01 mail]# grep prftp /etc/passwd | sort -n +2 -t':' |
> head -2
> sort: open failed: +2: No such file or directory

Thanks for the report.  However, this is not a bug in sort, but a
misunderstanding on your part about changes to sort syntax as POSIX has
evolved over the years.  From the NEWS file:

  A few usages still have behavior that depends on which POSIX standard is
  being conformed to, and portable applications should beware these
  problematic usages.  These include:

    Problematic       Standard-conforming replacement, depending on
       usage            whether you prefer the behavior of:
                      POSIX 1003.2-1992    POSIX 1003.1-2001
    sort +4           sort -k 5            sort ./+4

See also 'info coreutils standards' for information on how to set
_POSIX2_VERSION=199209 for the behavior you were expecting.

But in general, the old +2 syntax should be converted to the newer
POSIX-compliant -k3 (or even the safer -k3,3) instead.  Newer coreutils
(the latest is 8.10) added a --debug option, to help in that:

$ echo hi | _POSIX2_VERSION=199209 sort -n +2 -t: --debug
sort: using `en_US.UTF-8' sorting rules
sort: obsolescent key `+2' used; consider `-k 3' instead
sort: key 1 is numeric and spans multiple fields
hi
  ^ no match for key
__

-- 
Eric Blake   [email-masked]    +1-801-349-2682
Libvirt virtualization library http://libvirt.org