GNU bug report logs - #7961
sort

Previous Next

Package: coreutils;

Reported by: Francesco Bettella <francesb <at> decode.is>

Date: Wed, 2 Feb 2011 14:42:02 UTC

Severity: normal

Done: Pádraig Brady <P <at> draigBrady.com>

Bug is archived. No further changes may be made.

Full log


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

From: Jim Meyering <jim <at> meyering.net>
To: 7961 <at> debbugs.gnu.org
Cc: P <at> draigBrady.com
Subject: Re: bug#7961: sort
Date: Thu, 03 Feb 2011 09:20:14 +0100
Pádraig Brady wrote:
> On 02/02/11 17:44, Eric Blake wrote:
>> $ head -3 asd2 | LC_ALL=C sort -k 2.4,2n --debug
>> sort: using simple byte comparison
>> sort: leading blanks are significant in key 1; consider also specifying `b'
>> PRAMEF1>chr1
>>           ^ no match for key
>> ____________
>> PRAMEF4>chr1
>>           ^ no match for key
>> ____________
>> coding_gene>chr
>>               ^ no match for key
>>
>> But when you add -b (note, b is the one option you have to add to the
>> start field, since it affects start and end fields specially; all other
>> options can be added to start, end, or both, and affect the entire key):
>>
>> $ head -3 asd2 | sort -k 2.4b,2n --debug
>> sort: using `en_US.UTF-8' sorting rules
>> coding_gene>chr
>>                ^ no match for key
>> _______________
>> PRAMEF1>chr1
>>            _
>
>
> Yep. The 'b' option is one of the main reasons for --debug.
> Note, sort --debug will warn until you put it in the right place.
>
> Hmm, I just noticed a bug with --debug, introduced with bdde34f9:
>
> $ printf "A\tchr10\nB\tchr1\n" | ./sort -s --debug -k2.4b,2.3n 2>/dev/null
> A>chr10
>      __
> B>chr1
>      _
>
> This should fix it up:

Good catch.  That looks right and works for me:

  $ printf "A\tchr10\nB\tchr1\n" | ./sort -s --debug -k2.4b,2.3n 2>/dev/null
  A>chr10
       ^ no match for key
  B>chr1
       ^ no match for key

If you have time, please push that today.

> diff --git a/src/sort.c b/src/sort.c
> index 06b0d95..365634d 100644
> --- a/src/sort.c
> +++ b/src/sort.c
> @@ -2214,7 +2214,9 @@ debug_key (struct line const *line, struct keyfield const *key)
>
>            char *tighter_lim = beg;
>
> -          if (key->month)
> +          if (lim < beg)
> +            tighter_lim = lim;
> +          else if (key->month)
>              getmonth (beg, &tighter_lim);
>            else if (key->general_numeric)
>              ignore_value (strtold (beg, &tighter_lim));




This bug report was last modified 14 years and 163 days ago.

Previous Next


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