bug-coreutils
[Top][All Lists]
Advanced

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

bug#30661: closed (Re: bug#30661: sort)


From: Eric Blake
Subject: bug#30661: closed (Re: bug#30661: sort)
Date: Thu, 1 Mar 2018 19:52:24 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0

reopen 30661
retitle 30661 RFE: Add way for sort to handle hex numbers
tag 30661 -notabug
thanks

On 03/01/2018 05:29 PM, James Bunke wrote:
$ echo -e "170\n11" | sort -n

echo -e is not portable; printf is better.

11
170
$ echo -e "AA\nB" | sort -n
AA
B
$ echo -e "0xAA\n0xB" | sort -n
0xAA
0xB

Again, 'sort --debug' is your friend:

$ printf '0xAA\n0xB\n' | LC_ALL=C sort -n --debug
sort: using simple byte comparison
0xAA
_
____
0xB
_
___

The numeric sort key parses '0' and stops at 'x', because it does NOT parse hexadecimal.

Here's what POSIX has to say about -n:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sort.html

"-n
Restrict the sort key to an initial numeric string, consisting of optional <blank> characters, optional <hyphen-minus> character, and zero or more digits with an optional radix character and thousands separators (as defined in the current locale), which shall be sorted by arithmetic value. An empty digit string shall be treated as zero. Leading zeros and signs on zeros shall not affect ordering."

Which does not directly mention "decimal", but the mention of a radix character (as in '1.2' or '1,2', depending on locale) pretty much implies decimal, as radix characters are only output by printf when printing floating point values in a decimal format.


Perhaps its the documentation that is lacking as I find no reference to hexadecimal ineither the 
"man" or "info" on sort -- can it sort hexadecimal?

-n cannot. You are correct that we could improve the info page to make it explicit that -n sorts based on decimal values. You also raise a good point that it may be worth adding a new sorting option that sorts by hexadecimal. Although the existing practice of decorate/sort/undecorate to [temporarily] convert hex into decimal before sorting is going to be more portable, being able to directly sort hex does seem like something that may be worthwhile.

No information  on whatsort considers to be a "numeral" or expects hexadecimal 
to be represented. I was justattempting to skip extra processes to convert the data or to 
write my own sort process.
Thank you for your efforts on my behalf. Do you know who handles the 
documentation?Maybe there is newer man/info than on this old machine.

The info documentation is part of coreutils.git, so you've reached the right place. I'm going to reopen and retitle this bug to request the ability to do hex sorting.


--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org





reply via email to

[Prev in Thread] Current Thread [Next in Thread]