You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用AWK命令从可变命名的WAR文件名中提取版本号1.0.0?

适配可变文件名的版本号提取AWK命令

针对文件名前缀字段数可变的情况,推荐以下几种更通用的AWK命令:

方法1:基于版本号格式正则匹配

利用版本号x.x.x的数字加小数点特征直接匹配提取,适配所有符合该格式的版本号场景:

echo "s-pub-comtec-sap-product-app-1.0.0-mule-application.war" | awk '{match($0, /[0-9]+\.[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH)}'

原理:match函数定位符合数字.数字.数字的字符串位置,substr提取匹配到的内容,不受前缀字段数量影响。

方法2:反向定位固定后缀前的字段

如果版本号后的后缀(-mule-application.war)固定,可通过总字段数反向计算版本号位置:

echo "s-pub-comtec-sap-app-1.0.0-mule-application.war" | awk -F '-' '{print $(NF-2)}'

原理:NF表示当前行的总字段数,版本号是倒数第3个字段(倒数第2个是mule,最后1个是application.war),无需关心前缀字段数量。

方法3:先移除固定后缀再取最后一段

先去掉文件名末尾的固定后缀,再提取最后一个-分隔的内容,精准度更高:

echo "s-pub-comtec-sap-product-app-1.0.0-mule-application.war" | awk '{sub(/-mule-application\.war$/, ""); split($0, arr, "-"); print arr[length(arr)]}'

原理:sub移除末尾固定后缀后,用split按-分割为数组,取数组最后一个元素即为版本号,避免了其他数字串干扰。

内容的提问来源于stack exchange,提问作者Vamsi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:35:24