GNU bug report logs - #67690
Bug in command sort?

Previous Next

Package: coreutils;

Reported by: Oleg Moiseichuk <MetamAdeptus <at> gmx.net>

Date: Thu, 7 Dec 2023 14:51:01 UTC

Severity: normal

Full log


Message #8 received at 67690 <at> debbugs.gnu.org (full text, mbox):

From: Pádraig Brady <P <at> draigBrady.com>
To: Oleg Moiseichuk <MetamAdeptus <at> gmx.net>, 67690 <at> debbugs.gnu.org
Subject: Re: bug#67690: Bug in command sort?
Date: Thu, 7 Dec 2023 15:36:46 +0000
tag 67690 notabug
close 67690
stop

On 07/12/2023 14:36, Oleg Moiseichuk via GNU coreutils Bug Reports wrote:
> Hello!
> 
> I've got a list of IP addresses, each of them is prepended by its frequency counter (please find attached in the file list-1.txt). I need to sort them from most frequent to least. I tried using this command:
> sort -t '.' -n -k 1.1,1.8r -k 1.9 -k 2,2 -k 3,3 -k 4,4 list-1.txt
> But I've got some weird results.

Right, once you have multiple delimiters you generally need to adjust the data

> Ok, I merged these counters with IP addresses using awk (file list-2.txt). Now they use the same separator and I can simplify the command:
> sort -t '.' -n -k 1,1r -k 2,2 -k 3,3 -k 4,4 -k 5,5 list-2.txt > sorted-a.txt
> It looks like as sorted properly but some entries with the counters 13 and 10 are misplaced.
> Strangely enough, when I use direct order, they are sorted correctly:
> sort -t '.' -n -k 1,1 -k 2,2 -k 3,3 -k 4,4 -k 5,5 list-2.txt > sorted-b.txt

You're using the correct approach here, but missed this from the docs:

"A position in a sort field specified with ‘-k’ may have any of the
option letters ‘MbdfghinRrV’ appended to it, in which case no global
ordering options are inherited by that particular field."

I.e. the 'r' is cancelling out the global 'n'.

So you need to specify both options from that field like:

sort -t '.' -n -k 1,1rn -k 2,2 -k 3,3 -k 4,4 -k 5,5 list-2.txt

cheers,
Pádraig

p.s. the --debug option can be useful with sort to
help identify what's being compared, and various edge cases.




This bug report was last modified 1 year and 229 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.