# Version sort is not the same as numeric sort (GNU Coreutils 9.0)

Next: Punctuation Characters, Previous: Version-sort ordering rules, Up: Implementation Details [Contents][Index]

#### 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).