使用sort命令给软件的版本排序

软件的版本通常主版本、次版本和修正版本或者叫做补丁版本。所以软件的版本通常会使用三个数和两个点组成。这样排序的字段有三个。这样排序就需要使用三个 -k 来处理三个字段。

直接给出代码一个完整的示例. 一行代码

# curl -s http://nginx.org/en/download.html | grep -o -E "nginx-[0-9\.]*tar\.gz" | sort -t '.'  -k1,1 -k2,2n -k3,3n | uniq

curl -s http://nginx.org/en/download.html \
| grep -o -E "nginx-[0-9\.]*tar\.gz" \
| sort -t '.'  -k1,1 -k2,2n -k3,3n | uniq

代码解释

从网站中获取所有的版本,获取测试的数据

 curl -s http://nginx.org/en/download.html | grep -o -E "nginx-[0-9\.]*tar\.gz"

# 输出的数据
#nginx-1.13.7.tar.gz
#nginx-1.12.2.tar.gz
#...

通过 sort 排序
-t -- 表示分割字符 这里的分割符号就是一个点, 分割后就是 nginx-1 13 7 tar gz (5个字段)
-k -- 指定字段排序, -k1 表示按照第一个字段, -k1,1n -- 第一个字段按照数的排序,如果不是会出现类似 10 < 2 的情况,因为默认是按照字符串比较的

###更多说明
1. curl -s 选项不输出进度,只输出网页的内容。
2. grep -o 仅仅输出匹配的内容

发表评论

邮箱地址不会被公开。