[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#7961: sort
From: |
Pádraig Brady |
Subject: |
bug#7961: sort |
Date: |
Wed, 02 Feb 2011 22:59:02 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3 |
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:
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));
cheers,
Pádraig.