Thanks Assaf and Eric for the explanation. It's
very well hidden in the man page. I know it would break backward
compatability (so don't do it) and, as Eric pointed out to me, would break POSIX compatability, but I would think most people's
expectation would be that -k2 would be shorthand for -k2,2 rather than
-k2,end.
Updating the documentation would really help. Your proposals so far seem good, but they are really missing the point as far as I'm concerned, which is that *field separators are including in the comparison*, So I think Paul's update is a bit misleading, as it says "Sort compares each pair of fields, in the order specified on the command line, according to the associated ordering options, until a difference is found or no fields are left", but doesn't mention that it also uses the field separators when comparing fields.
If I'd seen the documentation suggesting using --debug, I would have used it, but still reported a bug as --debug would have just confirmed that sort was doing what I thought it was doing, which I thought was wrong.
So parhaps we could say somewhere in the documentation something like:
> KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where F is a
> field number and C a character position in the field; both default to 1, and
> the stop position defaults to the line's end. Note that any field separators between
> the start and stop positions are also included in the comparison.
And also possibly something like:
> ... A line's trailing newline is not part of the line for comparison purposes, but field
> separators are included in the comparison...
Thanks again,
Ed
Ps: Sorry for emailing you directly, Eric. My fault for not replying all.