unix - 如何从 curl 输出中查找最新版本信息
问题描述
我有以下 curl 的结果,我想要3.15.11.170827.alpha-25
下面列表中的最新版本
<a href="3.15.1.alpha-20/">3.15.1.alpha-20/</a> 04-Jul-2020 17:33 -
<a href="3.15.10.170764.alpha-24/">3.15.10.170764.alpha-24/</a> 04-Aug-2020 08:47 -
<a href="3.15.11.170827.alpha-25/">3.15.11.170827.alpha-25/</a> 04-Aug-2020 09:50 -
<a href="3.15.2.155956.alpha-21/">3.15.2.155956.alpha-21/</a> 04-Jul-2020 17:52 -
<a href="3.15.3.155957.alpha-0/">3.15.3.155957.alpha-0/</a> 04-Jul-2020 18:00 -
<a href="3.15.4.155958.alpha-22/">3.15.4.155958.alpha-22/</a> 04-Jul-2020 18:06 -
<a href="3.15.5.155959.alpha-23/">3.15.5.155959.alpha-23/</a> 04-Jul-2020 18:11 -
<a href="3.15.6.157518.alpha-0/">3.15.6.157518.alpha-0/</a> 08-Jul-2020 11:24 -
<a href="3.15.8.157838.alpha-1/">3.15.8.157838.alpha-1/</a> 08-Jul-2020 15:39 -
<a href="3.15.9.158265.alpha-2/">3.15.9.158265.alpha-2/</a> 09-Jul-2020 10:41 -
我尝试了以下选项grep -oP '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+.alpha-+[0-9]*' | sort
,但它不起作用。它显示错误的版本。如何根据日期或任何其他方式进行排序?即它应该总是显示3.15.11.170827.alpha-25
解决方案
如果你有 gnu sort with -V
,你可以这样做:
cut -d'"' -f2 input | sort -rV | sed 1q
如果你不这样做,你可以尝试:
sort -t. -k1,1rn -k2,2rn -k3,3rn -k4,4rn
(保留为清楚起见刚刚移除的预过滤器)。并非所有版本都有数字第 4 列,所以也许您想-k4,4r
改用。
推荐阅读
- javascript - 功能不从形式中获取价值
- amazon-web-services - AWS.EC2.Windows.CloudWatch.json 未记录可用磁盘空间
- sql - SQL-在数据库中查找丢失成绩的学生
- google-chrome - 如何处理从 Chrome 80 开始的新的第三方 cookie 规则?
- xml - 如何在 XSLT3.0 中将空行从 xml 删除到 CSV 输出
- c - 在C中使用队列反转堆栈
- javascript - 如何使用 Observable 启动下一个异步任务
- python - 23.2 项目 2:使用 LOOPS 进行数据可视化
- go - 使用 GORM 和 echo-framework 进行更新的惯用方式
- apache-kafka - Kafka 的消费者线程数应该等于主题分区数