在线等,大家来帮帮忙看看,关于如何比较版本大小的问题

在线等,大家来帮帮忙看看,关于如何比较版本大小的问题

按照版本从旧到新的规则如下
1.2b1
1.2b5
1.2b11
1.2
1.2.3
现在遇到的问题是用什么方法抽取其中的某几个字符,
(比如从1.2b11中取出.后面,b前面的那个2)
从而可以进行比较?
谢了,欢迎大家提供各种方法参考
不用太详细,只要说明大概用到的命令和语法即可      
sort      
sort的对象通常都是文本文件
如果版本号是存在变量中的呢?
是否sed或awk好一些?      
我喜欢 sed

. 前面的数字:
$ echo "11.22b33" | sed -e 's/\([0-9]\+\).*/\1/'

. 后面的数字:
$ echo "11.22b33" | sed -e 's/.*\.\([0-9]\+\).*/\1/'

b 后面的数字:
$ echo "11.22b33" | sed -e 's/.*b\([0-9]\)/\1/'

(如果没有 . 和 b 呢?自己想想吧)      
[QUOTE]最初由 doufuxishi 发布
[B]sort的对象通常都是文本文件
如果版本号是存在变量中的呢?
是否sed或awk好一些? [/B][/QUOTE]
弄到文件里还不简单?      
多谢两位斑竹的大力帮忙
呵呵,问题已经解决
version=1.2b3
major_ver=`echo "$version" | cut -c1`
minor_ver=`echo "$version" | cut -c3
.
.
.
因为格式是固定的,都是一位的,所以就偷懒这么做了,呵呵
如果没有b用了一个grep搜索判断,并设个flag(呵呵)置位用      
如果都是一位,可以这样:

version=1.2b3
major_ver=${version:0:1}
minor_ver=${version:2:1}