今天遇到一个需求,要把某个目录下面的版本号统一排序,然后取最大的两个版本  

目录结构如下   

drwxr-xr-x 2 root root 4096 Jul  7 16:01 1.0.1.199

drwxr-xr-x 2 root root 4096 Jul  7 15:53 2.0.1.194

drwxr-xr-x 2 root root 4096 Jul  7 15:53 5.0.1.195

解决方法如下    

ls -1|sort -t. -rnk1,1 -k2,2 -k3,3 -k4,4|head -2|sed -r 'N;s#\n#/* #g'

命令详解

ls -1                         

每行列举一个文件

sort 参数详解

-r倒序显示;-n按数字排序;-k指定某一列;-k1,1指定列的起始位置和结束位置。默认到行尾

head -2 截取前两行

sed 参数详解

 -r∶sed 的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法)

结果如下    

[root@localhost]# ls -1|sort -t. -rnk1,1 -k2,2 -k3,3 -k4,4|head -2|sed -r 'N;s#\n#/* #g'     

5.0.1.195/* 2.0.1.195