在bash
使用-n
选项sort
不会给我预期的结果。
$ 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
我尝试使用-k1
, -k1.1n
等( -k1.3n
获取仅从1
开始的数字的顺序)。 看来这里有一些非常基本的东西
你需要-t。 标志来指定'。' 作为分隔符,多个键位置说明符处理逐渐变长的/更深的数字。 我仍然不完全明白它是如何工作,但它的工作原理…
sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n numbers
要么
cat numbers | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n
这个版本号有一个特殊的标志
$ 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。 这个选项在GNU Coreutils中可用,在其他实现中可能会丢失。