首页 > 解决方案 > 如何从 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

标签: unix

解决方案


如果你有 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改用。


推荐阅读