所有
我需要一个好的算法,脚本比较“2.0.9”到“2.0.10”2.0.9小于2.0.10
“2.0.1”小于“2.0.9” “2.0.9”小于“2.0.92”
看图片?这是在Mac OS 10.6上。
答案 0 :(得分:1)
查看sort -V
和ls -v
源代码。
这也是我在其他程序学习版本排序之前编写的程序。
#!/usr/bin/perl
@S = <>;
print sort byglob @S;
######################################################################
#
# Sorting function which sorts numerically for numerical parts,
# alphabetically otherwise
#
sub byglob
{
my($A) = $a;
my($B) = $b;
my($c,$d,$e);
while ($A && $B)
{
$A =~ s/^([0-9]+|[^0-9]+)//;
$c = $1;
$B =~ s/^([0-9]+|[^0-9]+)//;
$d = $1;
if ($c =~ /\d/ && $d =~ /\d/)
{
$e = $c <=> $d;
}
else
{
$e = $c cmp $d;
}
return $e if ($e);
}
return $a cmp $b;
}
答案 1 :(得分:0)
在bash中使用算术运算符<
在算术表达式括号[[
和]]
中比较它们:
x=2.0.9
y=2.0.92
[[ $x < $y ]] && echo "less"
less