Sorting numbers with multiple decimals in bash

后端 未结 3 663
野性不改
野性不改 2020-12-20 14:51

In bash using sort with the -n option doesn\'t give me the expected result.

$ cat numbers | sort -n
1.0
1.1
1.11.4
1.         


        
相关标签:
3条回答
  • 2020-12-20 15:31
    sort -g numbers
    

    It will do. As per sort man page, -g is meant for numerical sorting:

    -g, --general-numeric-sort

    compare according to general numerical value

    0 讨论(0)
  • 2020-12-20 15:50

    You need the -t. flag to specify '.' as your separator, and the multiple key position specifiers handles the progressively longer/deeper numbers. I still don't quite understand exactly how it works, but it works ...

     sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n numbers
    

    or

     cat numbers | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n
    
    0 讨论(0)
  • 2020-12-20 15:51

    There is a special flag for this -V for version numbers

    $ sort -V numbers
    
    1.0
    1.1
    1.3
    1.3.3
    1.4-p1
    1.6.1
    1.11.4
    1.15
    2.2.2
    2.2.10
    2.4
    2.4.6
    

    ps. this option is available in GNU Coreutils and may be missing in other implementations.

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