coreutils: Version sort is not the same as numeric sort

 
 30.2.2 Version sort is not the same as numeric sort
 ---------------------------------------------------
 
 Consider the following text file:
 
      $ cat input4
      8.10
      8.5
      8.1
      8.01
      8.010
      8.100
      8.49
 
 
 
      Numerical Sort:                   Version Sort:
 
      $ sort -n input4                  $ sort -V input4
      8.01                              8.01
      8.010                             8.1
      8.1                               8.5
      8.10                              8.010
      8.100                             8.10
      8.49                              8.49
      8.5                               8.100
 
    Numeric sort (‘sort -n’) treats the entire string as a single numeric
 value, and compares it to other values.  For example, ‘8.1’, ‘8.10’ and
 ‘8.100’ are numerically equivalent, and are ordered together.
 Similarly, ‘8.49’ is numerically smaller than ‘8.5’, and appears before
 first.
 
    Version sort (‘sort -V’) first breaks down the string into digits and
 non-digits parts, and only then compares each part (see annotated
 example in Version-sort ordering rules).
 
    Comparing the string ‘8.1’ to ‘8.01’, first the ‘‘8’’ characters are
 compared (and are identical), then the dots (‘‘.’’) are compared and are
 identical, and lastly the remaining digits are compared numerically (‘1’
 and ‘01’) - which are numerically equivalent.  Hence, ‘8.01’ and ‘8.1’
 are grouped together.
 
    Similarly, comparing ‘8.5’ to ‘8.49’ - the ‘‘8’’ and ‘‘.’’ parts are
 identical, then the numeric values ‘5’ and ‘49’ are compared.  The
 resulting ‘5’ appears before ‘49’.
 
    This sorting order (where ‘8.5’ comes before ‘8.49’) is common when
 assigning versions to computer programs (while perhaps not intuitive or
 ’natural’ for people).