在bash中用多个小数sorting数字

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开始的数字的顺序)。 看来这里有一些非常基本的东西

Solutions Collecting From Web of "在bash中用多个小数sorting数字"

你需要-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中可用,在其他实现中可能会丢失。