排序小数

时间:2013-05-29 10:42:55

标签: bash list sorting decimal

这是用小数排序列表的另一个问题:

$ list="1 2 5 2.1"
$ for j in "${list[@]}"; do echo "$j"; done | sort -n
1 2 5 2.1

我期待

1 2 2.1 5

3 个答案:

答案 0 :(得分:4)

如果您打算将变量list作为数组,那么您需要说:

list=(1 2 5 2.1)

会导致

1
2
2.1
5

答案 1 :(得分:2)

for j in $list; do echo $j; done | sort -n

printf '%s\n' $list|sort -n

答案 2 :(得分:0)

您不需要"${list[@]}",只需$list,因为它只是一个字符串。否则它会在同一个字段中获取所有数字。

$ for j in $list; do echo $j; done | sort -n
1
2
2.1
5

使用您之前的代码,它根本没有排序:

$ list="77 1 2 5 2.1 99"
$ for j in "${list[@]}"; do echo "$j"; done | sort -n
77 1 2 5 2.1 99