sort's -k flag is buggy when M is also passed
All commands were run on both Ubuntu busybox v1.30.1 and Alpine busybox v1.35.0. I ran echo "3 March\n2 April" | busybox sort -k 2,2M and it returned 2 April 3 March It should return 3 March 2 April and indeed, that is what you get with GNU sort. (It doesn't seem to matter what the numbers "2" and "3" are - I replaced them both with the string "filler" and got the same result.) This seems to only happen when the field number is >1. For instance echo "March\nApril" | busybox sort -k 1,1M correctly outputs March April It also doesn't happen when M isn't passed into -k. For instance, echo "a c\nb b" | sort -k 2,2 correctly returns b b a c ___ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox
Re: sort's -k flag is buggy when M is also passed
> Had to use -e to have it insert new line. FWIW, I was able to get your tests to work without -e. (Alpine, busybox 1.35.0) > Looking at sort.c in busybox seems that > static char key_separator; is just defined, but not > assigned a default value? > Don't know if this might resolve issue? > static char key_separator=' '; Using -t ' ' might work for some cases, but consider abc March 3 de April 2 This example is a little contrived, but you might easily see something like this in the real world (think logfiles). ___ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox
Re: sort's -k flag is buggy when M is also passed
Fixed in git. Thank you. On Wed, Jun 29, 2022 at 7:11 AM Dennis Chen wrote: > > All commands were run on both Ubuntu busybox v1.30.1 and Alpine busybox > v1.35.0. > > I ran > echo "3 March\n2 April" | busybox sort -k 2,2M > and it returned > 2 April > 3 March > It should return > 3 March > 2 April > and indeed, that is what you get with GNU sort. (It doesn't seem to > matter what the numbers "2" and "3" are - I replaced them both with the > string "filler" and got the same result.) > > This seems to only happen when the field number is >1. For instance > echo "March\nApril" | busybox sort -k 1,1M > correctly outputs > March > April > > It also doesn't happen when M isn't passed into -k. For instance, > echo "a c\nb b" | sort -k 2,2 > correctly returns > b b > a c > ___ > busybox mailing list > busybox@busybox.net > http://lists.busybox.net/mailman/listinfo/busybox ___ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox