今天遇到一个需求,要把某个目录下面的版本号统一排序,然后取最大的两个版本
目录结构如下
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
本文转自 shouhou2581314 51CTO博客,原文链接:http://blog.51cto.com/thedream/1674186,如需转载请自行联系原作者