On Tue 9-Jan-07 4:11am -0600, Vigil wrote:

>>> This works on my admittedly small test set:
>>>
>>>         :%!sort -k3 -t/

>> You're making several unstated assumptions.
>>
>> (1) The records are already sorted by month and day.

> I would have thought that, too, but sorting this:
>
> 01/04/2007 blah
> 01/03/2007 blah
> 12/30/2006 blah
> 07/05/2003 blah
> 02/04/2007 blah
> 02/04/2006 blah
> 14/32/1996 blah
> 02/04/1996 blah
>
> give this:
>
> 02/04/1996 blah
> 14/32/1996 blah
> 07/05/2003 blah
> 02/04/2006 blah
> 12/30/2006 blah
> 01/03/2007 blah
> 01/04/2007 blah
> 02/04/2007 blah
>
> which, as you can see, has sorted by month and day, too,
> or is that just happenstance?

I had assumed the latter - but read on.

>> (3) Everything to the right of the year is the same in each
>>    record.

> Ah, I see why. My example sorts beginning at that column, not just on that
> column alone.

I thought I knew the unix sort utility fairly well.  I'm a
bit baffled.

I wrote a simple program to generate 1,000 records with just
random dates (month 1-12, day 1-30, year 1976-2007).

Sorting with:

    :%!sort -t/ -k3
and
    :%!sort -t/ -k3.1n,3.4 -k1n,2

produced identical correct results!

I then modified my program to add a comma and a random
letter.  Of course, your method failed since your 3rd field
includes the trailing 2 characters.

But modifying your method to:

    :%!sort -t/ -k3n

worked perfectly ????

BTW, I'm using: sort (GNU coreutils) 5.3.0
on Windows XP.  I know this discussion is a bit off topic
but I have found it fascinating.  Thanks, Vigil, for bring
it up.

-- 
Best regards,
Bill

Reply via email to