Unusual behaviour of linux's sort command

前端 未结 2 494
孤独总比滥情好
孤独总比滥情好 2021-01-23 04:47

On Linux shell the result of echo -e \"arrays2 2\\narrays 2\\narrays3 2\" | sort is

arrays  2
arrays2 2
arrays3 2

and the result

相关标签:
2条回答
  • 2021-01-23 05:09

    If you change the locale from en_US.utf8 to the old default, it works the way you expect:

    echo  -e "aaa\nfoo\narrays2 28\narrays 28\narrays3 28" | LC_ALL=C sort -
    aaa
    arrays 28
    arrays2 28
    arrays3 28
    foo
    
    0 讨论(0)
  • 2021-01-23 05:13

    The behaviour is locale-dependent:

    echo -e "arrays2 28\narrays 28\narrays3 28" | LANG=C sort
    

    prints

    arrays 28
    arrays2 28
    arrays3 28
    

    While

    echo -e "arrays2 28\narrays 28\narrays3 28" | LANG=de_DE.UTF-8 sort
    

    prints

    arrays2 28
    arrays 28
    arrays3 28
    

    (Note that the locale must be installed for this to have this effect, if the locale doesn't exist, the behaviour will be the same as with LANG=C).

    0 讨论(0)
提交回复
热议问题