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 less than ‘8.5’, and appears before
 first.
 
    Version sort (‘sort -V’) first breaks down the string into digit and
 non-digit 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’s 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 equal.  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).