Sorting numbers with multiple decimals in bash
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
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
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.