Issue
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.15
1.3
1.3.3
1.4-p1
1.6.1
2.2.10
2.2.2
2.4
2.4.6
I tried using -k1
, -k1.1n
, etc. (-k1.3n
gets the order correct only for numbers starting with 1
). It seems there's something very basic I'm missing here...
Solution
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
Answered By - Buddy Yaussy Answer Checked By - Dawn Plyler (WPSolving Volunteer)